Debian上SQL Server性能监控实战指南
一 监控体系与分层
- 建议采用分层监控:系统层(CPU、内存、磁盘、网络)、数据库引擎层(会话、请求、等待、锁、计划)、应用层(慢查询、错误、连接池)。
- 在 Debian 上,SQL Server 以 Linux 服务运行,无法使用 Windows 性能监视器;应使用 SSMS 远程活动监视器/性能仪表盘、DMVs/扩展事件、以及 Linux 系统工具 组合监控。
- 关键能力:实时会话与阻塞、等待统计、查询计划变更、日志空间、资源瓶颈定位、历史趋势与告警。
二 数据库引擎内置监控
| 监控目标 |
工具/对象 |
关键要点 |
| 当前活动与阻塞 |
SSMS 活动监视器;DMVs:sys.dm_exec_sessions、sys.dm_exec_requests、sys.dm_os_waiting_tasks |
查看正在运行的请求、阻塞链、等待类型与资源 |
| 查询性能与计划变更 |
查询存储(Query Store) |
按时间保留查询/计划/运行时统计,快速对比计划变更导致的性能差异 |
| 轻量事件跟踪 |
扩展事件(Extended Events) |
低开销捕获登录、错误、超时、长查询等事件 |
| 历史与资源快照 |
DMVs:sys.dm_os_performance_counters、sys.dm_db_log_space_usage;系统存储过程:sp_who、sp_who2、sp_lock、sp_spaceused、sp_monitor |
获取性能计数器、日志空间、会话/锁/空间使用与历史统计 |
- 实践要点:
- 在生产环境优先使用 查询存储 与 扩展事件 替代高开销的 Profiler;SSMS 的 活动监视器/性能仪表盘 适合快速巡检。
- 结合等待统计(如 PAGEIOLATCH_、WRITELOG、LCK_M_*)识别 I/O、日志、锁瓶颈。
三 Linux系统层监控
- 资源与 I/O:使用 top/htop、vmstat、iostat、nmon、sar 观察 CPU 利用率、内存压力、I/O 等待、上下文切换与磁盘吞吐。
- 连接与网络:使用 netstat/ss 检查连接数、TIME_WAIT、ESTABLISHED 状态与端口占用;必要时用 tcpdump 抓包定位异常交互。
- 进程与内存映射:用 ps、pstree、pmap 排查高内存/高 CPU 占用的 sqlservr 进程与线程。
- 日志与内核:用 journalctl -u mssql-server、tail -f /var/log/syslog、dmesg 查看服务日志、系统错误与硬件/驱动告警。
四 自动化与可视化
- 指标采集与可视化:部署 Prometheus + Grafana,配合 prometheus-mssql-exporter 采集 SQL Server 与主机指标,构建实时看板与阈值告警。
- 主机与服务监控:使用 Node Exporter 采集 Linux 指标,结合 Zabbix 实现 MSSQL 性能计数器 自动发现、阈值告警与可视化。
- 适用场景:需要 7×24 监控、历史趋势、容量规划与统一告警平台时优先采用。
五 快速排障与优化闭环
- 5 分钟巡检脚本(按需精简执行):
- 查看资源概况:
- CPU/内存/负载:top -b -d 1 -n 5 | head,free -m,uptime
- 磁盘 I/O:iostat -x 1 5
- 连接与端口:ss -s -t -a | head,netstat -an | grep :1433 | wc -l
- 查看 SQL Server 关键状态:
- 当前阻塞与长请求:
- SELECT r.session_id, r.blocking_session_id, r.wait_type, r.wait_time, r.cpu_time, r.logical_reads, t.text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
ORDER BY r.logical_reads DESC;
- 日志空间:DBCC SQLPERF(LOGSPACE);
- 会话/锁:EXEC sp_who2;,EXEC sp_lock;
- 检查服务与系统日志:journalctl -u mssql-server -xe --since “10 min ago”,tail -n 200 /var/log/syslog
- 若发现计划退化或异常 SQL:启用/查询 查询存储 定位变更前后的执行计划与耗时,配合 扩展事件 抓取高成本语句。
- 优化闭环:针对 TOP SQL 进行索引/统计信息/参数嗅探/查询重写优化,并在 查询存储 中观察改进效果。