Linux系统如何监控TPS?

在Linux系统中,TPS(Transactions Per Second,每秒事务数)是衡量系统事务处理能力的关键指标,尤其适用于数据库、文件系统、消息队列等场景的事务处理性能监控,事务可以理解为系统中完成的原子操作(如磁盘I/O、数据库提交、网络请求等),TPS越高说明系统在单位时间内能处理的事务越多,性能越好,本文将详细介绍Linux环境下监控TPS的常用工具、方法及实践技巧。

linux如何监控tps

TPS的定义与监控意义

TPS的核心是“事务”,即系统中不可分割的最小工作单元,在文件系统中,一次“创建文件+写入数据+关闭文件”可能算一个事务;在数据库中,一次“INSERT+COMMIT”也是一个事务,监控TPS的意义在于:

  1. 性能瓶颈定位:通过TPS变化结合CPU、内存、I/O等指标,判断系统是否因磁盘性能、网络延迟或资源竞争导致事务处理能力下降;
  2. 容量规划:根据历史TPS趋势,预测未来资源需求(如磁盘升级、数据库分库分表);
  3. 异常检测:TPS突降可能意味着磁盘故障、进程阻塞或服务异常,需及时告警。

Linux监控TPS的常用工具及实践

Linux提供了多种原生及第三方工具用于监控TPS,不同工具侧重不同场景(如系统级、进程级、应用级),需根据需求选择。

iostat:磁盘I/O级TPS监控

iostat是sysstat工具包的一部分,专注于磁盘I/O性能统计,可直接显示磁盘设备的TPS(即每秒发生的I/O操作数)。

安装与使用

# 安装sysstat工具包(CentOS/RHEL)
yum install sysstat  
# Ubuntu/Debian
apt-get install sysstat  
# 实时监控磁盘TPS(每秒刷新一次)
iostat -d -x -k 1  

参数说明

  • -d:显示磁盘统计信息;
  • -x:显示扩展统计(包括await、util等关键指标);
  • -k:以KB为单位显示数据量;
  • 1:每秒刷新一次。

输出解读

Device:         tps    kB_read/s    kB_wrtn/s    kB_dscd/s    %util
sda            125.34       1024.50       856.30          0.00     15.67
sdb             89.21        512.20      1024.80          0.00     22.34
  • tps:每秒向设备发起的I/O请求数(即磁盘级TPS);
  • %util:磁盘I/O时间占比(超过70%可能意味着磁盘瓶颈)。

适用场景:监控磁盘整体I/O性能,判断是否因磁盘读写能力不足导致TPS下降。

vmstat:系统级I/O压力监控

vmstat是虚拟内存统计工具,可显示进程、内存、I/O等系统级状态,其中bi(块设备读入)和bo(块设备写出)反映系统I/O压力,虽不直接显示TPS,但可辅助分析TPS变化原因。

使用方法

# 每秒刷新一次,显示系统状态
vmstat 1  

输出关键指标

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  2      0 102400  51200 204800    0    0   512  1024  1000  2000  10 20 60 10  0
  • b:阻塞的进程数(等待I/O的进程,若持续较高说明I/O瓶颈);
  • bi/bo:每秒块设备读入/写出数据量(单位为块,1块=1024字节),与TPS正相关(I/O操作越多,bi/bo越大)。

适用场景:快速判断系统是否存在I/O阻塞(b>0且持续)或I/O压力过大(bi+bo飙升)。

linux如何监控tps

sar:历史TPS趋势分析

sar(System Activity Reporter)同样是sysstat工具包的一部分,可收集并存储系统历史数据,适合分析TPS的长期趋势。

使用方法

# 实时监控磁盘TPS(每秒刷新,连续5次)
sar -d 1 5  
# 查看历史TPS数据(如昨天18点的磁盘I/O)
sar -d -s 18:00:00 -e 18:00:01 -f /var/log/sa/sa15

输出解读

Linux 5.4.0-91-generic (ubuntu)     08/20/2023  _x86_64_    (2 CPU)
10:00:01         DEV       tps    rd_sec/s    wr_sec/s  avgrq-sz  avgqu-sz   await r_await w_await  svctm  %util
10:00:02         sda      150.23      1024.50     2048.00    20.48     1.23    8.20   5.10   10.30   6.50  97.65
  • rd_sec/s/wr_sec/s:每秒读/写扇区数(1扇区=512字节),与TPS结合可判断I/O类型(读密集型还是写密集型)。

适用场景:分析TPS随时间的变化趋势,如业务高峰期TPS是否达标、磁盘性能衰减情况。

iotop:进程级I/O监控

iotop以top风格实时显示每个进程的I/O读写情况,可定位到具体的高I/O进程(如数据库、日志写入进程),辅助分析TPS异常原因。

安装与使用

# 安装iotop
yum install iotop  # CentOS/RHEL
apt-get install iotop  # Ubuntu/Debian
# 实时显示进程I/O(只显示有I/O操作的进程)
iotop -o -p [PID]  # 可指定进程PID,不指定则显示所有进程

输出关键指标

Total DISK READ :       1024.00 K/s | Total DISK WRITE :       2048.00 K/s
Actual DISK READ:       1024.00 K/s | Actual DISK WRITE:       2048.00 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
 1234 be/3 mysql     1024.00 K/s  2048.00 K/s  0.00 %  5.23 % /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
 5678 be/1 nginx        0.00 K/s   512.00 K/s  0.00 %  1.23 % nginx: worker process
  • DISK READ/DISK WRITE:进程每秒磁盘读/写量;
  • IO%:进程I/O时间占比(越高说明进程对I/O的占用越强)。

适用场景:定位导致TPS异常的具体进程(如某个SQL查询频繁刷盘、日志进程疯狂写入)。

dstat:综合性能监控

dstat是一款多功能系统统计工具,可整合CPU、内存、磁盘、网络等指标,同时支持TPS监控,适合快速查看系统整体性能。

安装与使用

# 安装dstat
yum install dstat  # CentOS/RHEL
apt-get install dstat  # Ubuntu/Debian
# 监控磁盘TPS及读写速率
dstat -d --disk-util

输出解读

linux如何监控tps

----total-cpu-usage---- -dsk/total- -dsk/sda- --most-intensive-
 usr sys idle iowait  | read  writ   read  writ  | process      
 10  20  60  10      |1024K 2048K  512K 1024K  | mysqld       
  • dsk/total:所有磁盘的TPS及读写速率;
  • dsk/sda:指定磁盘(如sda)的TPS及读写速率。

适用场景:需要同时监控TPS与其他系统指标(如CPU、内存)时,快速定位瓶颈。

不同场景下的TPS监控策略

文件系统TPS监控

文件系统(如ext4、XFS)的TPS主要与元数据操作(如inode分配、目录更新)相关,可通过以下工具细化监控:

  • ext4:使用debugfs查看文件系统状态:
    debugfs -R "stats /dev/sda1" /dev/sda1

    输出中的Transaction blocks可反映事务处理量。

  • XFS:使用xfs_io查看日志性能:
    xfs_io -c "stat" /mnt/xfs_data

数据库TPS监控

数据库(如MySQL、PostgreSQL)的TPS通常指每秒事务提交数(COMMIT),需结合数据库自身工具监控:

  • MySQL:通过SHOW GLOBAL STATUS获取事务相关计数器:
    SHOW GLOBAL STATUS LIKE 'Com_commit';

    计算TPS:(当前Com_commit值 - 上次采样值) / 时间差(秒)

  • PostgreSQL:使用pg_stat_activity视图:
    SELECT count(*) FROM pg_stat_activity WHERE state='active' AND query NOT LIKE '%pg_stat_activity%';

TPS数据分析与优化

TPS异常判断

  • TPS过高:若磁盘%util超过70%,且await(平均I/O等待时间)超过10ms,说明磁盘已达瓶颈,可考虑升级SSD、调整RAID级别或优化应用I/O逻辑(如批量写入替代单条写入)。
  • TPS突降:检查b(阻塞进程数)是否突增,或iotop中是否有异常高I/O进程(如死循环写入),同时查看/var/log/messagesdmesg确认是否有磁盘错误。

自动化监控与告警

使用Prometheus+Grafana或Zabbix可实现TPS自动化监控与告警:

  • Prometheus:通过node_exporter暴露iostat指标(如node_disk_io_time_seconds_total),在Grafana中创建仪表盘,设置TPS低于阈值时触发告警。
  • Zabbix:创建自定义item,通过iostat -d命令解析TPS,设置触发器(如TPS连续5分钟低于100)。

相关问答FAQs

Q1:如何判断Linux系统当前TPS是否处于合理范围?
A:TPS合理范围需结合硬件配置和应用场景判断:

  • 机械硬盘(HDD):一般TPS在100-500之间,若超过500且%util>70%,说明磁盘已满负荷;
  • 固态硬盘(SSD):顺序读写TPS可达5000+,随机读写TPS在1000+,若远低于此值需检查I/O模式(如是否开启AHCI);
  • 数据库场景:MySQL InnoDB引擎TPS通常在1000-10000(取决于配置),若TPS<100需检查事务隔离级别、锁竞争或SQL效率。

同时需结合iowaitvmstat中的wa列):若iowait>30%,说明I/O已成为瓶颈,TPS可能偏低。

Q2:使用iostat监控TPS时,await指标过高说明什么?如何优化?
A:await指每次I/O操作的平均等待时间(单位:ms),计算公式为await = (io_time * 1000) / (total_operations),若await超过10ms,说明磁盘响应慢,可能原因及优化措施如下:

  • 原因1:磁盘碎片(仅ext4/XFS需在线整理):
    # ext4碎片整理(需卸载文件系统或使用在线工具e4defrag)
    e4defrag /dev/sda1
    # XFS碎片整理
    xfs_fsr /mnt/xfs_data
  • 原因2:I/O调度算法不当
    查看当前调度算法:cat /sys/block/sda/queue/scheduler,若为deadlinenoop(适合SSD),可调整为none(完全交给SSD自身调度):

    echo none > /sys/block/sda/queue/scheduler
  • 原因3:应用I/O方式不合理
    避免频繁小文件I/O(如日志每秒刷盘),可调整为批量写入(如每10秒刷一次);数据库场景可调整innodb_flush_log_at_trx_commit参数(从1改为0,但会丢失事务安全性)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/33921.html

(0)
酷番叔酷番叔
上一篇 2025年10月1日 18:02
下一篇 2025年10月1日 18:24

相关推荐

  • Linux系统IP冲突怎么办?,快速解决Linux IP地址冲突,如何检测Linux的IP冲突?

    使用arp-scan工具(推荐)arp-scan通过主动发送ARP请求检测IP冲突,结果精准可靠,步骤:安装工具(Debian/Ubuntu为例):sudo apt update && sudo apt install arp-scan扫描本地网络(替换eth0为你的网卡名):sudo arp……

    2025年6月24日
    7100
  • Win7电脑如何安全装Ubuntu双系统?

    在已运行 Windows 7 的电脑上,通过分区备份后安装 Ubuntu,实现双系统启动,启动时可选进入不同操作系统。

    2025年7月24日
    5700
  • Linux系统如何快速返回桌面?操作步骤与方法有哪些?

    在Linux系统中,“返回桌面”的操作因桌面环境的不同而存在差异,常见的桌面环境包括GNOME、KDE Plasma、XFCE、MATE、Cinnamon等,每种环境都有其独特的交互逻辑和快捷方式,下面将详细介绍主流桌面环境下返回桌面的方法,并辅以通用技巧和特殊情况处理,主流桌面环境的具体操作方法GNOME(U……

    2025年9月10日
    4500
  • Linux系统下GitHub客户端的安装详细步骤是什么?

    在Linux环境下使用GitHub,核心是安装Git(版本控制工具)和GitHub CLI(命令行交互工具),前者是基础操作依赖,后者则简化了与GitHub平台的交互流程,本文将详细介绍不同Linux发行版的安装步骤、配置方法及注意事项,帮助用户顺利完成环境搭建,安装Git:GitHub操作的基础Git是分布式……

    2025年9月24日
    5000
  • Linux下如何高效查看文件目录?

    ls 命令(最常用)功能:列出当前目录下的文件和子目录,基础用法:ls # 列出非隐藏文件(简单视图)ls -l # 详细列表(权限、所有者、大小、修改时间)ls -a # 显示所有文件(包括隐藏文件,如 .config)ls -lh # 人性化显示文件大小(如 KB/MB)ls -t # 按修改时间排序(最新……

    2025年6月15日
    7200

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信