基于IIS的asp.net webapi性能非常慢,如何提高?

问题描述

测试过程:打开200个winform的exe后,采用某种措施,使它们几乎同时对IIS进行访问调用webapi,结果执行完这200个调用总共耗时16秒,所以我觉得性能非常低,代码如下,请问如何提高(IIS服务器为一般的个人机器4核4GB)api代码如下:[HttpPost][ActionName("post2")]publicstringpost2(){SqlConnectioncon246=newSqlConnection("server=10.10.7.70;uid=sa;database=wy;pwd=sa;MinPoolSize=1;MaxPoolSize=100;");con246.Open();SqlCommandcmd246=con246.CreateCommand();cmd246.CommandText="insertinsert_tablevalues(getdate(),getdate())";cmd246.ExecuteNonQuery();con246.Close();return"ok";}c#客户端代码如下:stringurl="http://localhost:19159//api/user/post2";HttpClientclient=newHttpClient();this.richTextBox1.Text=client.PostAsync(url,null).Result.Content.ReadAsStringAsync().Result;

解决方案

解决方案二:
你这是200并发啊……你确认你有这么高的新增并发?
解决方案三:
这是测试嘛故意模拟200并发的
解决方案四:
弄分布式式
解决方案五:
大公司的web测试都会并发1000~10000个测试客户端,并且每一个点再连续运行10次。一般要求达到平均每秒处理上千访问。根据内部机制不同(例如不是sqlserver而是mongodb),可能要求每秒达到上万才算合格。asp.net是典型的”慢启动“的,你可以先用2个请求访问一下,然后再开始正式测试。
解决方案六:
asp.net很慢,webservice或者wcf之类的更慢,因此我们对这类数据服务,都是使用自己根据HttpListener扩展出来自定义的web服务器(只要几十行c#代码即可)来承载这类程序,而不用asp.net。
解决方案七:
200个exe在一个计算机上?那么,的确会很慢。其实gui是很费资源的。
解决方案八:
引用5楼sp1234的回复:

asp.net很慢,webservice或者wcf之类的更慢,因此我们对这类数据服务,都是使用自己根据HttpListener扩展出来自定义的web服务器(只要几十行c#代码即可)来承载这类程序,而不用asp.net。

以前从没关注过HttpListener类的具体内容,刚才浏览了相关的一些介绍,我回头要好好研究研究你说的这一问题,做一下对比测试,这对我似乎用处比较大,又跟你学一招了,呵呵。
解决方案九:

解决方案十:
就算很慢也不至于200个并发需要16秒才执行完毕赛,我这两百个并发,如果不通过IIS,直接将webapi里面的代码嵌入到我的C#客户端里直接访问数据库,只需要200ms就完成了我深信数据库能够达到这个并发值,但是对于IIS并发能力这么弱,始终觉得不应该
解决方案十一:
既然测试IIS,就不要访问数据库了,直接返回看看怎么样。另外要除去初始化的代价,比如先预请求一次,然后再测试。200/16这个太低了,看看是不是客户端写的有问题。
解决方案十二:
我把webapi里面的写数据库的代码都全部删掉,只执行returnDateTime.Now.ToString("yyyy-MM-ddHH:mm:ss.fff");这一行代码,最后统计发现,200并发,依然还是要花掉15秒左右,真是奇怪!
解决方案十三:
应该是你测试程序问题吧200个exe如何统计的呢?还是多线程测试?或者是自己测试环境本来就差呢?可以在服务端加日志看服务相应时间,在排查下。
解决方案十四:
我也遇到了这个问题。我同时部署了webservice和webapi在一台winserver2008的IIS上,都是调用服务器上的加密程序进行加密。发现webservice返回结果只需4-5秒,webapi却需要10-11秒,而且记录的日志显示:其实被调函数的内部从头执行到尾只花了3秒左右,webservice额外的1-2秒时间可以理解,webapi额外的7-8秒时间干嘛去了...十分不解啊...
解决方案十五:
引用13楼K0000000r的回复:

我也遇到了这个问题。我同时部署了webservice和webapi在一台winserver2008的IIS上,都是调用服务器上的加密程序进行加密。发现webservice返回结果只需4-5秒,webapi却需要10-11秒,而且记录的日志显示:其实被调函数的内部从头执行到尾只花了3秒左右,webservice额外的1-2秒时间可以理解,webapi额外的7-8秒时间干嘛去了...十分不解啊...

内存满了吧

时间: 2024-11-03 22:16:30

基于IIS的asp.net webapi性能非常慢,如何提高?的相关文章

基于IIS和ASP的标题广告管理系统(一)

    标题广告是Web上最常见的广告形式.本文介绍了一个基于IIS和ASP的标题广告管理系统,该系统支持广告客户和广告的管理,能够随机选择广告并生成显示广告的HTML代码(但参考广告的等级.显示次数限制.点击次数限制),并能够记录广告显示.点击的历史纪录. 一.数据库表结构 标题广告也就是Banner Ad,是Web上最常见的广告形式.本文介绍的标题广告管理系统利用Access数据库db.mdb来保存数据.db.mdb包含三个表:Advertisement保存有关广告的信息,Advertise

基于IIS和ASP的标题广告管理系统(二) 

二.管理功能 管理部分共有12个asp文件,这些脚本的主要功能分别如下: BannerAdminLogin.asp:管理功能的登录页面.默认的用户名称是"ADMIN USER",密码是"PASSWORD". CheckBannerAdministrationPassword.asp:检查使用管理功能的用户的密码. NotLoggedIn.asp:"没有登录"提示页面,如果在登录之前访问管理页面,则显示该页面. BannerAdministrati

基于ASP.NET WebAPI OWIN实现Self-Host项目实战

引用 寄宿ASP.NET Web API 不一定需要IIS 的支持,我们可以采用Self Host 的方式使用任意类型的应用程序(控制台.Windows Forms 应用.WPF 应用甚至是Windows Service)作为宿主. 一.摘要 本期同样带给大家分享的是阿笨在实际工作中遇到的真实业务场景,请跟随阿笨的视角去如何实现采用微软的ASP.NET OWIN技术承载WebAPI服务,如果您对本期的教程内容感兴趣,那么请允许让阿笨带着大家一起学习吧! 废话不多说,直接上干货,我们不生产干货,我

WCF技术剖析之二:再谈IIS与ASP.NET管道

IIS 5.x与ASP.NET 我们先来看看IIS 5.x是如何处理基于ASP.NET资源(比如.aspx,.asmx等)请求的,整个过程基本上可以通过图1体现. IIS 5.x运行在进程InetInfo.exe中,在该进程中一个最重要的服务就是名为World Wide Web Publishing Service(简称W3SVC)的Windows Service.W3SVC的主要功能包括HTTP请求的监听.工作进程的管理以及配置管理(通过从Metabase中加载相关配置信息)等. 当检测到某个

ASP.NET Process Model之一 IIS 和 ASP.NET ISAPI_win服务器

前几天有一个朋友在MSN上问我"ASP.NET 从最初的接收到Http request到最终生成Response的整个流程到底是怎样的?"我觉得这个问题涉及到IIS和ASP.NETASP.NET Runtime的处理模型的问题,并不是三言两语就能说清楚的,所以决定写这样一篇介绍IIS和ASP.NET Runtime Process Model的文章,谈谈我对此的一个粗浅的认识,如果有什么不对的地方,希望大家及时指正. 这篇文章大体分为两个部分,第一部分我将谈谈IIS的两个不同的版本-I

艾伟_转载:[原创]再谈IIS与ASP.NET管道

在2007年9月份,我曾经写了三篇详细介绍IIS架构和ASP.NET运行时管道的文章,深入介绍了IIS 5.x与IIS 6.0HTTP请求的监听与分发机制,以及ASP.NET运行时管道对HTTP请求的处理流程: [原创]ASP.NET Process Model之一:IIS 和 ASP.NET ISAPI[原创]ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline - Part I[原创]ASP.NET Process Model之二:ASP

艾伟:[原创]再谈IIS与ASP.NET管道

在2007年9月份,我曾经写了三篇详细介绍IIS架构和ASP.NET运行时管道的文章,深入介绍了IIS 5.x与IIS 6.0HTTP请求的监听与分发机制,以及ASP.NET运行时管道对HTTP请求的处理流程: [原创]ASP.NET Process Model之一:IIS 和 ASP.NET ISAPI[原创]ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline - Part I[原创]ASP.NET Process Model之二:ASP

关于大小型项目如何最大限度提高WebAPi性能

前言 WebAPi作为接口请求的一种服务,当我们请求该服务时我们目标是需要快速获取该服务的数据响应,这种情况在大型项目中尤为常见,此时迫切需要提高WebAPi的响应机制,当然也少不了前端需要作出的努力,这里我们只讲述在大小型项目中如何利用后台逻辑尽可能最大限度提高WebAPi性能,我们从以下几个方面来进行阐述. 性能提升一:JSON序列化器(Jil) 在.NET里面默认的序列化器是JavaScriptSrializer,都懂的,性能实在是差,后来出现了Json.NET,以至于在目前创建项目时默认

ASP.NET Process Model之一:IIS 和 ASP.NET ISAPI

ASP.NET Process Model索引 ASP.NET Process Model之一:IIS 和 ASP.NET ISAPI ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline[上篇] ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline[下篇] 前几天有一个朋友在MSN上问我"ASP.NET 从最初的接收到Http request到最终生成Response的整个流程到底是怎样