服务器能支持 10 万并发由于一个项目的访问量越来越大,从原来的几百个,增加
到现在 50 多万个每天,所以阿里的服务器也扛不住了,于是就想办法,查了 N 多
资料,总结了以下方法,才解决这问题,每天一共访问量 50 多万,并不是同时访
问,所以,提高并发数才是关键。
由于网站一再打不开,按照排除原因来看,数据库连接、进程池满了、iis 并发数太
高,我能想到的就只有这三种情况,于是就一个一个排除,当项目网站打不开时,
同服务器其他网站都正常,内存不到 30%,CUP 不到 20%,怎么可能打不开呢,
于是我先重启数据库,发现仍然打不开,然后重启进程池,还是打不开,最后我重
启 iis,这次好了,秒开。看来是 iis 并发数搞得鬼,于是就查微软资料,发现,win2008
默认的并发数是 5000,我想这哪够啊,就想到如下方法,按步骤来:
步骤一:
首先设置进程池
要点:把队列长度调整到 65535,禁止重叠回收,最大故障数改成 65530,这三点
必须要改,不然实现不了 10 万并发效果
步骤二:
调整 IIS 的 appConcurrentRequestLimit 设置
在开始--》运行--》输入:c:\windows\system32\inetsrv\appcmd.exe set config
/section:serverRuntime /appConcurrentRequestLimit:100000--》回车
即 可 , 然 后 可 通 过 在 运 行 中 输
入%systemroot%\System32\inetsrv\config\applicationHost.config 回车查询
设置结果,设置后就会出现下面代码:
步骤三:
调整 machine.config 中的 processModel>requestQueueLimit 的设置
在
开
始
-->
运
行
--
》
输
入:%systemroot%\Microsoft.Net\Framework64\v2.0.50727\CONFIG\machi
ne.config
打 开 后 搜 索 找 到 :
, 将 此 替 换 成
步骤四:
在开始--》运行--》输入下面三句代码,然后回车,分别输入
reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters
/v
MaxConnections /t REG_DWORD /d 100000
reg
add
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parame
ters /v MaxFieldLength /t REG_DWORD /d 32768
reg
add
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parame
ters /v MaxRequestBytes /t REG_DWORD /d 32768
第一句将 tcp 并发数提高到 10 万,第二和第三句防止出现解决 Bad Request -
Request Too Long 问题,三句分别输入,分别回车
步骤五:
启动 cmd,然后先输入 net stop http,等待完成,再输入 net start http,等待完
成,再输入 iisreset
完成以上 5 步后,再重启服务器,即可达到并发数 10 万,无压力
如果访问量再大的话,就需要使用负载均衡、图片和网站分离、CDN 等方法。原文
来源:http://club.zoomla.cn/PItem?id=13609
IIS7.5 是微软推出的最新平台 IIS,性能也较以前有很大的提升,但是默认的设置配
不适合很大的请求。但是我们可以根据实际的需要进行 IIS 调整,使其性能更佳,
支持同时 10 万个请求。
以下方案,通过对 IIS7 的配置进行优化,调整 IIS7 应用池的队列长度,请求数限制,
TCPIP 连接数等方面,从而使 WEB 服务器的性能得以提升,保证 WEB 访问的访问
流畅。
解决方案:
步骤一:调整 IIS 的应用程序池队列长度。
在【应用程序池】列表中,选择你相应网站所使用的应用程序池,将原来的队列长
度由 1000 改为 65535。当然这里的队列长度你可以根据自己的访问用户*1.5 来设
置,例如:你有 2000 用户,你此处就可以设置为 3000(3000=2000 用户数*1.5),
官方参考
设置如下图:
步骤二:调整 IIS 的 appConcurrentRequestLimit 值
打开 cmd 命令,运行命令:c:\Windows\System32\inetsrv\appcmd.exe set
config /section:serverRuntime /appConcurrentRequestLimit:100000
步 骤 三 : 修 改 ASP.NET 请 求 队 列 限 制 即 调 整 machine.config 中 的
processModel>RequestQueueLimit
1、单击“开始”,然后单击“运行”。
2 、 在 “ 运 行 ” 对 话 框 中 , 键 入
notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\
machine.config,然后单击“确定”。(不同的.NET 版本路径不一样,你可以选择你
自己当前想设置的.NET 版本的 config)
3、找到如下所示的 processModel 元素:
4 、 将 processModel 元 素 替 换 为 以 下 值 :
5、保存并关闭 Machine.config 文件。
步骤四:修改注册表,调整 IIS 支持的并发 TCPIP 连接数
在
cmd
命 令 中 运 行 命 令 : reg
add
HKLM\System\CurrentControlSet\Services\HTTP\Parameters
/v
MaxConnections /t REG_DWORD /d 100000,当然也可以手动去注册表修改
参考:
MSDN: http://technet.microsoft.com/zh-cn/library/dd425294(office.13).
aspx , http://technet.microsoft.com/zh-cn/library/dd441171(v=office.1
3).aspx