zoukankan      html  css  js  c++  java
  • IIS服务器能支持10万并发

    服务器能支持10万并发由于一个项目的访问量越来越大,从原来的几百个,增加到现在50多万个每天,所以阿里的服务器也扛不住了,于是就想办法,查了N多资料,总结了以下方法,才解决这问题,每天一共访问量50多万,并不是同时访问,所以,提高并发数才是关键。


    由于网站一再打不开,按照排除原因来看,数据库连接、进程池满了、iis并发数太高,我能想到的就只有这三种情况,于是就一个一个排除,当项目网站打不开时,同服务器其他网站都正常,内存不到30%,CUP不到20%,怎么可能打不开呢,于是我先重启数据库,发现仍然打不开,然后重启进程池,还是打不开,最后我重启iis,这次好了,秒开。看来是iis并发数搞得鬼,于是就查微软资料,发现,win2008默认的并发数是5000,我想这哪够啊,就想到如下方法,按步骤来:


    步骤一:
    首先设置进程池

    要点:把队列长度调整到65535,禁止重叠回收,最大故障数改成65530,这三点必须要改,不然实现不了10万并发效果
    步骤二:
    调整IIS 的appConcurrentRequestLimit设置
    在开始--》运行--》输入:c:windowssystem32inetsrvappcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000--》回车
    即可,然后可通过在运行中输入%systemroot%System32inetsrvconfigapplicationHost.config回车查询设置结果,设置后就会出现下面代码:
    <serverRuntime appConcurrentRequestLimit="100000" />
    步骤三:
    调整machine.config中的processModel>requestQueueLimit的设置
    在开始-->运行--》输入:%systemroot%Microsoft.NetFramework64v2.0.50727CONFIGmachine.config
    打开后搜索找到:<processModel autoConfig="true" />,将此替换成<processModel enable="true" requestQueueLimit="100000" />
    步骤四:
    在开始--》运行--》输入下面三句代码,然后回车,分别输入
    reg add HKLMSystemCurrentControlSetServicesHTTPParameters /v MaxConnections /t REG_DWORD /d 100000
    reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesHTTPParameters /v MaxFieldLength /t REG_DWORD /d 32768
    reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesHTTPParameters /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:WindowsSystem32inetsrvappcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000




    步骤三:修改ASP.NET请求队列限制即调整machine.config中的processModel>RequestQueueLimit
    1、单击“开始”,然后单击“运行”。
    2、在“运行”对话框中,键入 notepad %systemroot%Microsoft.NetFramework64v4.0.30319CONFIGmachine.config,然后单击“确定”。(不同的.NET版本路径不一样,你可以选择你自己当前想设置的.NET版本的config)
    3、找到如下所示的 processModel 元素:<processModel autoConfig="true" />
    4、将 processModel 元素替换为以下值:<processModel enable="true" requestQueueLimit="15000" />


    5、保存并关闭 Machine.config 文件。
    步骤四:修改注册表,调整IIS支持的并发TCPIP连接数
    在cmd命令中运行命令:reg add HKLMSystemCurrentControlSetServicesHTTPParameters /v MaxConnections /t REG_DWORD /d 100000,当然也可以手动去注册表修改


    可在注册表中查看


    至此,IIS的调整优化就完成了,可以同时支持10W个请求。
    参考:
    MSDN: http://technet.microsoft.com/zh-cn/library/dd425294(office.13).aspx , http://technet.microsoft.com/zh-cn/library/dd441171(v=office.13).aspx


    原文来源:http://club.zoomla.cn/PItem?id=13609

  • 相关阅读:
    img标签与span一起使用不在同一条线上
    媒体查询
    section标签实现文字滚动
    js活jQuery实现动态添加、移除css/js文件
    页面中动态改变浏览器标题
    css清浮动与动态计算元素宽度
    js实现60s倒计时效果
    js与es6中获取时间戳
    JavaScript中实现小数点后保留2位
    GMT时间转换
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/7495261.html
Copyright © 2011-2022 走看看