我在一家托管公司有一台虚拟服务器,因此 CPU 和 RAM 有限。我需要观察一段时间内的负载/性能,以便知道何时升级服务器。
该网站运行多个 ASP.NET 应用程序以及 PHP 应用程序,均带有 MSSQL 后端。
哪些重要的性能计数器可用于监控标准 IIS/MSSQL Web 服务器:即传入的 IIS 请求量、响应时间、MSSQL 负载等?简要说明计数器为何重要以及需要注意什么(如果不明显)也会有所帮助。
答案1
你应该从基础开始;
- 处理器信息\% 处理器时间
- 内存\页数/秒
- 内存:可用字节
- 逻辑磁盘*\平均磁盘队列长度
- SQL Server:缓冲区管理器\缓冲区缓存命中率
如果您使用非 Express SQL 的默认安装,那么它将占用所有内存并使 IIS/Windows 处于空闲状态。另一方面,如果 SQL 没有足够的内存,它的缓冲区缓存命中率会很低,您可能会看到磁盘排队。大多数其他计数器将是单个服务器安装的磁盘/内存/处理器约束的副作用。一旦您到了需要确定它是否是:IIS/SQL、php vs asp.net、识别密集型 WP 等的地步,那么监控就会变得更加复杂,您将需要进行大量研究或聘请承包商。
底部链接的用户性能监视器或顾问工具可设置数据收集计划,以记录关键性能计数器。通常,5-15 分钟的样本足以进行整体系统监控/分析。如果您尝试诊断特定问题,则短时间内可能需要 15 秒或更短的时间。
页面/秒:长时间平均值 > 150 可能表示存在问题,但这也取决于磁盘。在云服务器上,您可能希望平均值 < 150,因为磁盘可能是共享的或远程的。还要查看可用字节数,如果页面/秒很高且可用字节数很高,则计数器可能会产生误导,因为除了分页之外还有其他原因,这超出了本问题的范围
% 处理器时间:如果它是平均值或者您看到延长的时间 > 75-80%,则您受到 CPU 限制。
缓冲区缓存命中率:一般应为 96-99%,较低则表示 SQL 未有效缓存,需要更多内存
平均磁盘队列长度:记录每个磁盘,> 2 表示磁盘已饱和。您还可以记录 PhysicalDisk\% 空闲时间,如果它低于 20%,则表示磁盘已饱和。
您还可以使用 Microsoft 的性能顾问来启动您的监控,并根据 Microsoft 的建议进行更彻底的监控; Microsoft 绩效顾问
答案2
您的问题很难客观地回答。但是,我可以告诉您,如果您的数据库正在定期运行并且数据库不小,MSSQL 将占用尽可能多的内存。(尽管 SQL Server Express 版本不会占用超过 1 GB 的内存。)因此,如果 SQL Server 使用了所有可用内存,请不要感到惊讶。如果是这样,那并不一定意味着您需要升级内存,在这种情况下它仍然可以正常运行。我的观点是,内存使用率可能不像 CPU 使用率或网站延迟那样有意义。