linux性能监控

本文发布时间: 2019-Mar-22
缘起某个线上系统平时非常稳定,当大量更新数据时,系统的服务就会严重超时。问题存在了一段时间,基本猜测系统超时和大量写入数据有关,但却无法给出确切的解释。最近花了几天时间,深入研究这个问题。首先是需要给出问题原因的确切解释。因此,需要监控服务不正常期间linux系统的各种性能。Linux性能检测工具top -- 查看进程活动状态以及一些系统状况,常用于查看CPU、内存异常的进程PID。free -- 查看系统整体内存状况。vmstat -- 查看系统状态、硬件和系统信息等。查看CPU使用情况、上下文切换情况、进程数(是否过多?)。iostat -- 查看CPU 负载,硬盘状况。常用于查看IO状况(查看CPU的工具很多)sar -- 综合工具,查看系统状况。这个太强大了,但自己一般只用类监控网络状况(sar -n DEV|EDEV)mpstat -- 查看多处理器状况,类似vmstat,适用于多CPU场景(还有非多CPU的服务器不?)netstat -- 查看网络状况。常用于:产看进程监听的端口、各个端口的recv|send队列状况(是否过载)、收发包的简单统计iptraf -- 实时网络状况监测。tcpdump -- 抓取网络数据包,详细分析。强大的网络包分析工具。tcptrace -- 数据包分析工具。netperf -- 网络带宽工具。dstat -- 综合工具,综合了 vmstat, iostat, ifstat, netstat 等多个信息。监控脚本常用工具如上,一般情况下,直接启动命令看输出。但有时需要监控某个特定时间系统的运行状况,简单办法就是定时启动命令,并将命令输入打印到log, 或者使用诸如sar这类强大的性能监视工具。贴几个监控工具的包装脚本,结合crontab即可实现定时启动、收集一定时间间隔的性能数据。iostat:#!/bin/bashecho "$0 Start... "`date`echoiostat -dmxt 1 $1echo "$0 Finish. "`date`mpstat:#!/bin/bashecho "$0 Start... "`date`echompstat -P ALL 1 $1echoecho "$0 Finish. "`date`netstat:#!/bin/bashNUM=5000000if [[ $# -gt 0 ]]then NUM=$1fiecho "$0 Start test...`date`"echo#for i in `seq 0 $NUM` # if NUM is large, waste much resource.#for i in {1..100} # {1..100} must be constanti=0while [[ i -lt $NUM ]]do echo `date` netstat -anp -u # udp only -t -- tcp echo sleep 1 ((i++))doneecho "$0 Finish test.`date`"


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:11pm
栏目列表