首页 新闻 赞助 找找看

ASP.NET网站响应超时问题

0
悬赏园豆:80 [待解决问题]

场景:在网站中定义一个类实现IHttpHandler接口,在ProcessRequest方法中根据context的请求参数不同执行相应的方法。执行开始前Stopwatch.start(),执行结束后stopwatch.stop(),然后将ExecuteTime用log4net记录到文件日志中。

现象:外部调用者经常会反映我们的接口响应超时,通过排查网站IIS日志发现部分记录的time-taken大于10s以上,sc-status状态码都是200,sc-win32-status则出现了64、1236、121等状态码(正常的响应码是0)。然后检查了log4net中对应时段日志记录,发现ExecuteTime比较稳定,基本保持在5-200ms之间,极少的情况会出现1-2s。两个日志的耗时差距非常大!

问题:
1、IIS中time-taken的值是怎么得出的?
2、能否根据现象的描述排除掉是我们程序本身的性能问题?
3、如果是网络这块的问题,应该如何排查?

 

奉上所有园豆,求大神

os340223的主页 os340223 | 初学一级 | 园豆:5
提问于:2015-06-10 17:00
< >
分享
所有回答(4)
0

//
// MessageId: ERROR_NETNAME_DELETED
//
// MessageText:
//
// The specified network name is no longer available.
//
#define ERROR_NETNAME_DELETED            64L

 

//
// MessageId: ERROR_SEM_TIMEOUT
//
// MessageText:
//
// The semaphore timeout period has expired.
//
#define ERROR_SEM_TIMEOUT                121L

 

//
// MessageId: ERROR_CONNECTION_ABORTED
//
// MessageText:
//
// The network connection was aborted by the local system.
//
#define ERROR_CONNECTION_ABORTED         1236L

 

time-taken:https://support.microsoft.com/en-us/kb/944884

Launcher | 园豆:45045 (高人七级) | 2015-06-10 17:28
0

1. IIS中time-taken的值从服务端收到请求的第一个字节开始起,直到把所有响应内容发送出去为止.  就这段时间。 

2. 你可以用time-taken倒序, 看哪些最大, 然后再去分析是什么情况。 

3. 结合第2点,但网络排查不尽, 讲究高性能, 你就得多架服务器, 负载均衡, 烧钱烧钱等等等等等等等等等等等等等等

问天何必 | 园豆:3311 (老鸟四级) | 2015-06-10 17:46
0

1. 在代码里面,把未关闭的连接关闭

2. 扩大共享池,方法如下:

解决方法可以是修改连接池的连接生存期,因为默认值是60秒,即连接从应用程序被释放后可以在池中保存的时间。

具体操作步骤如下:

如果是ODBC的话,则可以在ODBC Data Source Administrator中手动更改,该程序位于“Start”菜单中的“Programs”->"Adminstrative Tools"(中文名:管理工具)下,或从"Control Panel"(中文名:控制面板)中打开“ODBC Data Source Administrator”(ODBC数据源管理器),再选择“Connection Pooling”(连接池)选项卡,双击驱动程序中的“SQL Server”,选择“Pool Connetions to this drive”(使用池连接该驱动程序),把下面的时间60秒改的大一点,例如120。
如果是SqlConnection的共享连接,则为ConnectionString属性Connection Lifetime数值名称指定一个值,该值默认情况下是0,表示连接永远不会从池中被自动移走。如果指定一个不同的值,那么一旦连接被返回到池中,该值将和连接的创建时间及当前时间进行比较。如果生存期超过了Connection Lifetime的值,那么连接将从池中被移走。

请叫我头头哥 | 园豆:9382 (大侠五级) | 2015-06-11 09:54
0

从大到小排查吧。

先看看调用者到你服务器的网络是不是有问题。

程序和数据库分别进行排查。看是否有那块出现问题了。

程序跳出了电脑 | 园豆:208 (菜鸟二级) | 2015-06-11 15:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册