温馨提示×

Debian服务器上SQL Server的性能监控

小樊
36
2025-11-15 00:43:22
栏目: 云计算

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_WRITELOGLCK_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-servertail -f /var/log/syslogdmesg 查看服务日志、系统错误与硬件/驱动告警。

四 自动化与可视化

  • 指标采集与可视化:部署 Prometheus + Grafana,配合 prometheus-mssql-exporter 采集 SQL Server 与主机指标,构建实时看板与阈值告警。
  • 主机与服务监控:使用 Node Exporter 采集 Linux 指标,结合 Zabbix 实现 MSSQL 性能计数器 自动发现、阈值告警与可视化。
  • 适用场景:需要 7×24 监控、历史趋势、容量规划与统一告警平台时优先采用。

五 快速排障与优化闭环

  • 5 分钟巡检脚本(按需精简执行):
    1. 查看资源概况:
      • CPU/内存/负载:top -b -d 1 -n 5 | headfree -muptime
      • 磁盘 I/O:iostat -x 1 5
      • 连接与端口:ss -s -t -a | headnetstat -an | grep :1433 | wc -l
    2. 查看 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;
    3. 检查服务与系统日志:journalctl -u mssql-server -xe --since “10 min ago”tail -n 200 /var/log/syslog
    4. 若发现计划退化或异常 SQL:启用/查询 查询存储 定位变更前后的执行计划与耗时,配合 扩展事件 抓取高成本语句。
    5. 优化闭环:针对 TOP SQL 进行索引/统计信息/参数嗅探/查询重写优化,并在 查询存储 中观察改进效果。

0