本文为本系列最后一章,监控内存使用。监控服务器的内存是非常重要的事情,有很多情况会引起内存消耗。所以要经常性地做检查。
准备工作:
在开始之前,先来了解一下将要用到的计数器:
Ø Memory: Available Mbytes:提供系统上可用内存的数量。
Ø Memory: Pages/sec:显示有多少页被用于读或写入硬盘,这些基于硬页面错误。
Ø Paging File:%Usage:显示挂起的总数的百分比。
Ø sql Server: Buffer Manager: Buffer cache hit ratio:返回sqlServer从缓存但不是从硬盘返回的数据的百分比。
Ø sql Server: Buffer Manager: Page life expectancy:显示数据驻留在内存的平均秒数
Ø sql Server: Buffer Manager: Memory Grants Pending:等待内存工作区授予的进程数。
步骤:
1、 打开可靠性和性能监视器,在【运行】中输入perfmon.exe
2、 选择性能监视器。
3、 去除所有已存在的计数器。
4、 添加新计数器。
5、 选择所要监视的服务器。
6、 选择下面的计数器:
Memory: Available Mbytes
Memory: Pages/sec
Paging File:%Usage
sql Server: Buffer Manager: Buffer cache hit
sql Server: Buffer Manager: Page life expectancy
sql Server: Memory Manager: Memory Grants Pending
7、 然后点击确定。
上面这些步骤已经在前一章说明了。这里就不累赘了。
分析:
在本文中,再次使用了可靠性和性能监视器这个工具。为了获取内存相关的性能计数器,需要在图形化界面中观察这些计数器。
首先先检查Memory: Available Mbytes,这个值意味着系统的可用内存。如果发现这个值经常很低,可能表示服务器内存不足,在生产数据库中,这个值可以使用GB为单位。
然后检查Memory: Pages/sec ,以为这因为硬页面错误导致的从磁盘读或写页面。这个值如果长期高于20,意味着内存不足使得应用程序使用虚拟内存,从而导致挂起。
接着是Memory: pages/sec ,同时也要检查Paging File:%Usage去预估内存挂起。如果这个值经常超过20%,可能意味着内存不足。
sql Server: Buffer Manager: Buffer cache hit ratio:意味着数据从缓存中读取的次数,比较合理的值为大于90%。如果该值很低,可能内存不足或者需要检查索引和查询。如果你需要获得大量数据,这一步可能就会占用大量内存然后引起sqlServer从磁盘读数据而不是从内存。检查索引,确保在大表中能尽可能笔描扫描。并尽可能限制查询返回的结果行。
检查sql Server: Buffer Manager: Page life expectancy,表示数据页驻留在内存的秒数。微软建议最少300秒。如果在一个实例中经常低于300秒,意味着数据保留的时间少于5分钟就被移出内存。
如果sql Server: Memory Manager: Memory Grants Pending经常建议等待进程,你可能需要增加服务器的内存了。
不管什么原因,如果你发现内存不足和挂起发生得比较频繁,你首先应该检查是否有非sql Server的其他应用或者服务耗费了比sql Server更加多的内存。如果你发现这些应用或者服务,尝试移到别的服务器。如果做不到,那么需要增加更多的内存,以供sqlServer使用。
如果服务器仅仅工sql Server使用且没有上面说的情况,那么要分析你的查询和索引,以确保他们是最优化的。如果已经优化好,还是存在这些问题,那么才需要考虑增加内存。
除了可靠性和性能监视器,还可以使用sql Server Profiler来监控性能,创建一个用户自定义收集器并存为文件,当你从性能监视器中获取性能数据时,sql Server Profiler会同步运行。一旦你完成收集,可以把性能数据导入到sqlServer Profiler中供任何时候分析。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。