我知道SQL Server不释放内存,除非操作系统需要它。 然后,监视可用字节(空闲内存)不是监视服务的最佳方式。 还有哪些其他variables可以给我一个关于SQL Server行为的真实度量? 也许页数/秒或页面错误/秒? 我正在使用nagios监视服务,有时会出现警报,因为执行了一个大的查询。
您可以通过使用Perfmon计数器的SQL来获得正确的内存使用情况,特别是Total Server Memory。 有了Nagios,你可以使用NSClient ++和nrpe来轮询这些计数器。 这里有一些SQL计数器供您参考(愚蠢的警告和关键级别):
define service { service_description SQL Buffer Cache Hit Ratio use generic-service hostgroup_name database_servers check_command check_nrpe_counter!BufferCacheHitRatio!\\SQLServer:Buffer Manager\\Buffer cache hit ratio!100!200 } define service { service_description SQL Full Scans Per Sec use generic-service hostgroup_name database_servers check_command check_nrpe_counter!scans!\\SQLServer:Access Methods\\Full Scans/sec!100!200 } define service { service_description SQL Latch Wait Time in MS use generic-service hostgroup_name database_servers check_command check_nrpe_counter!ms!\\SQLServer:Latches\\Total Latch Wait Time (ms)!100!200 } define service { service_description SQL Batch Req Per Sec use generic-service hostgroup_name database_servers check_command check_nrpe_counter!req!\\SQLServer:SQL Statistics\\Batch Requests/sec!100!200 } define service { service_description SQL Re-Compilations Per Sec use generic-service hostgroup_name database_servers check_command check_nrpe_counter!req!\\SQLServer:SQL Statistics\\SQL Re-Compilations/sec!100!200 } define service { service_description SQL Total Memory in KB use generic-service hostgroup_name database_servers check_command check_nrpe_counter!mem!\\SQLServer:Memory Manager\\Total Server Memory (KB)!100!200 } define service { service_description SQL Memory Grants Pending use generic-service hostgroup_name database_servers check_command check_nrpe_counter!PenMemGrant!\\SQLServer:Memory Manager\\Memory Grants Pending!100!200 } #define service { # service_description SQL Mirror Log Remaining For Undo # use generic-service # check_command check_nrpe_counter!kb!\\SQLServer:Database Mirroring(StackOverflow)\\Log Remaining for Undo KB!100!200 #} #define service { # service_description SQL Mirror Log Send Queue # use generic-service # check_command check_nrpe_counter!kb!\\SQLServer:Database Mirroring(StackOverflow)\\Log Remaining for Undo KB!100!200 #} #define service { # service_description SQL Mirror Redo Queue # use generic-service # check_command check_nrpe_counter!kb!\\SQLServer:Database Mirroring(StackOverflow)\\Log Remaining for Undo KB!100!200 #} define service { service_description SQL Number of Connected Users use generic-service hostgroup_name database_servers check_command check_nrpe_counter!UserCon!\\SQLServer:General Statistics\\User Connections!100!200 }
示例命令Def:
define command { command_name check_nrpe_counter command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c CheckCounter -a "Counter:$ARG1$=$ARG2$" ShowAll MaxWarn=$ARG3$ MaxCrit=$ARG4$ }
最后,您可能对Brent Ozarbuild议的SQL Perfmon计数器感兴趣: http ://www.brentozar.com/archive/2006/12/dba-101-using-perfmon-for-sql-performance-tuning/