一次网站故障的排除
先说下运行环境:
OS:winserve2012
DB:SQLSERVER
IIS+ASP.NET
最近某网站愈来愈慢,经咨询给出的回复是说网站缓存文件太多导致,需要删除缓存.
@ECHO OFF
iisreset /stop
Echo Deleting x86 Temporary ASP.NET Files
for /d %%i in (“%systemroot%\Microsoft.Net\Framework\v*”) do for /d %%f in (“%%i\Temporary ASP.NET Files\*”) do RD /q/s “%%f”
Echo Deleting x64 Temporary ASP.NET Files
for /d %%i in (“%systemroot%\Microsoft.Net\Framework64\v*”) do for /d %%f in (“%%i\Temporary ASP.NET Files\*”) do RD /q/s “%%f”iisreset /start
@ECHO ON
操作后,刚开始有效果,后来有效时间越来越短,说明没对症,有联系了不靠谱的网站公司,回应说生成的静态文件也需要删除,由于海量的静态文件生成在一个文件夹中,系统的IO达到瓶颈,听着像是那么回事,于是增加批量删除静态文件操作.但是收效甚微.所以考虑没有找到问题所在,唯一的特征是重启IIS后会快很多.由此出发,重启IIS时,会释放所有的TCP连接,重启应用池.
首先 netstat-ano, IIS刚重启好和网站卡的时候,区别是增加了很多处理close_wait的连接,而且本地应用是HTTP,端口80,初步怀疑是程序的连接没有正常关闭,占用了大量系统资源,导致后续的出先等待.
所以解决方案一.是增大TCP连接数(server2012 默认值为5000),用tcpview发现总连接没有超过500,所以应该不需要增加默认连接数,如果要修改
修改最大TCP连接端口数(MaxUserPort)限制,修改方法:在注册表
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
中添加名为MaxUserPort,类型为DWORD(32-bit),值为65543(10进制)的项目并重启计算机。
方案二,强制关闭等待的连接,(持续观察中)