对于网站来说,性能问题是至关重要的。关于性能,最重要的有两点:

  • 需要不断地发现速度或资源瓶颈的位置,然后采取针对性的措施进行优化。
  • 对于运行中的服务器,随时了解运行的状态。当服务器出现问题的时候,尽早发现,尽早恢复。比如访问量由于某些原因增大,导致 CPU 升高,这有可能导致整台服务器的宕机,这是如果没有及时发现,就可能带来很大的麻烦。

当然性能监测有大量专业工具可以选择。不过最简单的情况下,基于操作系统自带的功能,也可以方便滴实现这面的功能。这里记录一下最基本的几个功能:

性能监视器

运行: 开始 -> 控制面板 -> 管理工具 -> 性能监视器

在性能监视器中,可以监测大量各种不同的“性能计数器”,它们分别指示不同的性能指标。例如,最基本的CPU的使用率、网站的请求数量等等。

最常用的可能有下面几个:

  • CPU 占用率 (Processor -> % Processor Time)
  • 平均每秒执行的请求数(ASP.NET Applications -> Requests / Sec)
  • 执行最近的请求使用的时间(ASP.NET Applications -> Request Execution Time):
  • 当前正在执行的请求数(ASP.NET Applications -> Requests Executing)
  • 等待处理的请求数量(ASP.NET -> Requests Queued)

性能监视器

注意可以通过选项设置采样间隔和持续时间,默认为1秒和100秒。我理解持续时间用于计算平均值,例如上图中,我设置为采样间隔为5秒钟,持续时间为5分钟,那么选中“执行最近的请求使用的时间”这一行,曲线图的下面会显示:最新的一个请求用了62毫秒,最近5分钟里的所有请求平均使用102毫秒,这里可以看出“持续时间”这个选项的作用。从这里也可以看出有一些请求的处理时间相当长,它们都是植的优化的地方。

自动发送 Email 通知

此外,对于小网站来说,不可能有人分分秒秒盯着CPU曲线。因此,设定一些限值,能够自动提醒是很必要的功能。而性能监视器提供了大量了数据,包括处理器、内存、硬盘、网络、数据库以及其他各种服务的性能指标,你可以找到你需要监视的指标,并设定一定值限值,当超过该值时,就发出电子邮件,通知负责的人员。

在 Windows Server 2003 上,性能监视器可以直接挂上报警的操作,而在 Windows Server 2008 中,需要把相关的操作移到“任务计划程序”中,因此二者不太一样,这里记录一下操作步骤,以备后查。

Step 1: 使用命令行发送邮件程序,设定发邮件脚本

1: 下载一个可以通过命令行方式发送 Email 的程序,我使用的是SmtpMailSender :http://www.snapfiles.com/downloads/smtpmailsender/dlsmtpmailsender.html

2: 把下载的 .exe 文件下载到一个文件夹中,例如:d:\smtpmailsender\smtpmailsender.exe

3: 首先运行这个程序,点击“设置”按钮,在对话框中设置 smtp、用户名、端口、密码等等,和普通的邮件客户端程序没有区别。然后关闭程序。

4: 测试这个程序是否正常。创建一个文本文件,命名为 perfalert.cmd,同样保存在 d:\smtpmailsender\ 目录中,其内容为

smtpmailsender.exe -f "发件人地址"  -t "收件人地址" -s "邮件标题" -b "邮件正文" -send

5: 然后进入命令行窗口,运行 perfalert.cmd,如果你的邮箱收到这个邮件就说明发邮件的程序配置好了。下面开始设置任务计划。

Setp 2: 设定任务计划

6: 运行: 开始 -> 附件 -> 系统工具 -> 任务计划程序

7: 右侧窗格 -> 创建任务(不是创建基本任务)

8: 在“名称”选项卡,输入一个名称,例如“PerfAlert”

9: 在“操作”选项卡,按“新建”按钮,选择“启动程序”,然后下面按浏览按钮,找到刚才保存好的 perfalert.cmd 文件。注意一定要在下面的“起始于”文本框中输入保存上面这个文件的目录路径,例如:d:\smtpmailsender\ 。

10: 一路确定保存,这样就把任务计划设置好了。下面就要设置性能监视器的报警了。

Setp 3: 设定性能监视器的报警选项

11: 在任务监视器左侧窗格中,选择 数据收集器 -> 用户定义,鼠标右键,选择 新建 -> 收集数据,在弹出的对话框中输入一个名字,然后选择“手动创建”,然后“下一步” -> “性能计数器报警” -> “下一步” -> 选择某一个性能计数器,比如选择“Processor -> % Processor Time”,然后在下面选择“大于”,并输入一个限值,为了便于测试,可以输入一个低一些的数值,这样保证很快就会触发,然后完成关闭对话框。

12: 在右侧可一看到刚才创建的这个报警对应于一个项目,鼠标右键单击它,出现对话框,在“警报”页面,输入一个采样间隔,比如2分钟,在“警告操作”页面,下拉框中选中对应的那个数据收集器集,然后在“警告任务”页面,最上面的文本框输入在任务计划中创建的任务名称,例如上面的 PerfAlert。然后确定,关闭对话框。

13: 鼠标右键单击建立的数据收集器集,在弹出菜单中选择“开始”。这样的这个监视才开始运行,它两分钟采样一次,如果CPU使用率超过设定的数值,就会启动任务计划中设定的发送邮件的任务。

好了,一切OK!