centos下sqlserver性能监控
导读:CentOS 下 SQL Server 性能监控实操指南 一 监控体系与分层 数据库引擎层:使用 DMVs(动态管理视图) 与 Extended Events(XE) 获取会话、请求、等待、执行计划、错误与登录等关键运行时信息,适合定位阻...
CentOS 下 SQL Server 性能监控实操指南
一 监控体系与分层
- 数据库引擎层:使用 DMVs(动态管理视图) 与 Extended Events(XE) 获取会话、请求、等待、执行计划、错误与登录等关键运行时信息,适合定位阻塞、慢查询与异常。
- 系统资源层:在 CentOS 上用 top/htop、vmstat、iostat、mpstat、nmon、sar、pmap、netstat、strace、tcpdump 等观察 CPU、内存、磁盘 IO、网络与进程行为,判断是否存在资源瓶颈。
- 可视化与告警层:采用 Prometheus + Grafana 或 Zabbix 做长期采集、可视化与阈值告警,形成统一监控大盘与告警通道。
二 快速检查与即时诊断
- 连接与实例信息
- 使用 sqlcmd 连接:
- 命令:
sqlcmd -S < host_or_ip> ,< port> -U < user> -P < pwd> - 示例查询:
SELECT @@SERVERNAME, @@VERSION, SERVERPROPERTY('ProductVersion')SELECT session_id, request_id, task_state, wait_type, wait_time_ms, blocking_session_id FROM sys.dm_exec_requests WHERE session_id > 50;EXEC sp_who2;DBCC SQLPERF(LOGSPACE);
- 命令:
- 使用 sqlcmd 连接:
- 系统侧快速定位
- CPU/内存/负载:
top/htop、vmstat 1、free -m、uptime - 磁盘 IO:
iostat -x 1(关注 await、r/s、w/s、util) - 多核与调度:
mpstat -P ALL 1 - 网络与连接:
netstat -anp | grep :< sql_port> - 进程与内存映射:
pmap -x < sqlservr_pid>、ps aux | grep sqlservr - 综合与历史:
nmon、sar -u -r -b -d 1 60 - 调用栈与网络抓包(排障用):
strace -p < sqlservr_pid> -T -f -o sqlstrace.out、tcpdump -i any -nn port < sql_port> -w sql.pcap
- CPU/内存/负载:
- 轻量长期采集
- 使用 gdbm 或 Python 脚本定期执行上述 SQL,写入 Prometheus Pushgateway 或本地 CSV,便于与系统指标合并展示。
三 长期监控与可视化方案
- Prometheus + Grafana
- 部署 Prometheus,在
prometheus.yml增加作业:scrape_configs: - job_name: 'sqlserver' static_configs: - targets: ['< host_ip> :< exporter_port> ']
- 部署 Grafana,添加 Prometheus 数据源并导入 SQL Server 仪表盘(社区有现成面板,可按需裁剪)。
- 部署 Prometheus,在
- Zabbix
- 通过 ODBC 监控 MSSQL 性能计数器与实例/库状态,支持自动发现、阈值告警与可视化。
- Nagios
- 安装 Nagios 与插件,配置命令与检查项对实例连通性、关键查询与资源阈值进行告警。
四 关键指标与阈值建议
| 维度 | 关键指标 | 常用来源 | 建议动作 |
|---|---|---|---|
| 连接与会话 | 当前连接数、阻塞会话数 | sys.dm_exec_sessions、sys.dm_exec_requests |
连接突增或长期阻塞时排查应用逻辑与锁等待 |
| 工作负载 | 批处理请求/秒、编译/重编译 | DMVs(如 sys.dm_exec_query_stats) |
重编译频繁时检查参数嗅探、统计信息 |
| 等待统计 | 前 N 等待类型与总等待时间 | sys.dm_os_wait_stats |
针对 PAGEIOLATCH_/WRITELOG/ASYNC_NETWORK_IO 等优化 IO、网络与日志 |
| 日志 | 日志空间使用率 | DBCC SQLPERF(LOGSPACE) |
接近满时扩容日志或优化检查点/备份 |
| 资源 | CPU 利用率、可用内存、磁盘 IO 等待 | top/vmstat/iostat/mpstat |
CPU 持续高时查热点查询;IO 高时查索引/统计/磁盘 |
| 错误与登录 | 登录失败、错误事件 | Extended Events | 发现暴力破解或异常登录及时处置 |
五 排障流程与优化方向
- 发现慢查询或阻塞
- 在
sys.dm_exec_requests中定位 blocking_session_id,结合sys.dm_exec_sql_text与sys.dm_exec_query_plan查看 SQL 与执行计划;必要时用 Extended Events 捕获登录、错误与慢查询事件,降低开销。
- 在
- 日志与磁盘瓶颈
- 用
DBCC SQLPERF(LOGSPACE)检查日志使用;用iostat观察 await、util,确认是否存储/文件系统瓶颈;结合日志备份策略与检查点调优。
- 用
- 内存与 CPU 压力
- 用
free、vmstat、top判断内存压力与 CPU 占用;在 DMVs 中分析 PAGEIOLATCH_/RESOURCE_SEMAPHORE 等等待,配合索引与统计信息优化,减少不必要的排序/哈希/扫描。
- 用
- 网络与连接异常
- 用
netstat检查连接状态与端口占用,用tcpdump抓包定位异常流量或超时;结合应用侧连接池配置与超时重试策略。
- 用
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos下sqlserver性能监控
本文地址: https://pptw.com/jishu/770624.html
