IIS服务器管理学习 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求

工欲善其事必先利其器

首先给服务器配上强力的软件,用于安全防护和监控。

公司服务器用的阿里云的ECS,已经有防护和监控了,之后又选择额外加了一个安全狗

为了监控服务器上系统的各项运行指标,又买了听云平台的听云Server服务。


1.队列长度

网站对应的应用程序池->高级设置->常规

即可进入队列的最大请求数。

2.最大工作进程数

网站对应的应用程序池->高级设置->进程模型

默认是1,如果设置大于1,则是Web Garden,多个进程分担压力,网站处理并发请求的能力自然会提升。

不过要注意的是每一个工作进程是独立的应用程序,全局静态变量不共享。并且进程过多会给服务器造成较大压力,反而降低并发能力,所以需要权衡进程数的多少。

3.最大并发连接数

网站->高级设置->行为->连接限制

4.IIS最大并发工作线程数

这个数字在IIS里面是没有界面进行设置的。这个数字跟操作系统相关,win7系统的IIS的值是10,VS2012自带的IIS Express的值是80。

配置文件地址 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config

具体内容可看这个 【深入理解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 应用程序中的一个常见问题,应用程序可能会创建大量在进程退出后才会释放的池。 这样,将打开大量的连接,占用许多内存,从而影响性能。