工欲善其事必先利其器
首先给服务器配上强力的软件,用于安全防护和监控。
公司服务器用的阿里云的ECS,已经有防护和监控了,之后又选择额外加了一个安全狗
为了监控服务器上系统的各项运行指标,又买了听云平台的听云Server服务。
1.队列长度
网站对应的应用程序池->高级设置->常规
即可进入队列的最大请求数。
2.最大工作进程数
网站对应的应用程序池->高级设置->进程模型
默认是1,如果设置大于1,则是Web Garden,多个进程分担压力,网站处理并发请求的能力自然会提升。
不过要注意的是每一个工作进程是独立的应用程序,全局静态变量不共享。并且进程过多会给服务器造成较大压力,反而降低并发能力,所以需要权衡进程数的多少。
3.最大并发连接数
网站->高级设置->行为->连接限制
4.IIS最大并发工作线程数
这个数字在IIS里面是没有界面进行设置的。这个数字跟操作系统相关,win7系统的IIS的值是10,VS2012自带的IIS Express的值是80。
配置文件地址 C:WindowsMicrosoft.NETFramework64v4.0.30319Configmachine.config
让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求
具体内容可看这个 【深入理解IIS的多线程工作机制】
netstat -net
查看所有连接
压力测试的时候要保证测试的响应时间曲线稳定住一定时间后,才认为是当前被测试服务器的真实性能,因为刚开始测试的时候需要一定预热时间,一般测试到一定时间之后曲线会稳定住,这时候再判断当前的响应时间。
你想建设一个能承受500万PV/每天的网站吗?服务器每秒要处理多少个请求才能应对?
性能监控
打开性能监视器 cmd->perfmon.msc
计数器:Web Service -> Current Connection ,选择Total或者想要监控的站点 添加即可 。这个监控的是即时IIS并发连接数。
还有数据库连接数,可以通过下面的语句查看
SELECT * FROM [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN ( SELECT [DBID] FROM [Master].[dbo].[SYSDATABASES] WHERE NAME='databaseName' )
池碎片
池碎片是许多 Web 应用程序中的一个常见问题,应用程序可能会创建大量在进程退出后才会释放的池。 这样,将打开大量的连接,占用许多内存,从而影响性能。