登录到一台有性能问题的机器,第一步做什么?针对于面对性能问题无从下手,本文介绍性能查找方法论和快速定位问题的 10 个命令 。
USE 方法USE(Utilization Saturation and Errors)方法可以分析任何系统性能问题 。它的思想就是根据一个 checklist, 一一核对,快速找到系统的错误和资源瓶颈 。它旨在性能优化早期发现系统问题 。这些需要被检查资源包括:
- CPUs : sockets, cores, hardware threads (virtual CPUs)
- Memory : capacity
- Network interfaces
- Storage devices : I/O, capacity
- Controllers : storage, network cards
- Interconnects : CPUs, memory, I/O
uptimedmesg | tailvmstat 1mpstat -P ALL 1pidstat 1IOStat -xz 1free -msar -n DEV 1sar -n TCP,ETCP 1top
1. uptime$ uptime 23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02
uptime 命令帮助你快速查看系统的平均负载 。敲下这个命令后分别显示当前时间,系统启动时间,用户数,1 分钟 5 分钟 15 分钟内系统平均负载 。平均负载可以理解成系统可运行的进程平均数 。使用 3 个不同的时间粒度来帮助你分析系统负载的趋势,例如判断系统的是不是越来越大,还是已经错过了高峰 。本例中,15 分钟,5 分钟,1 分钟系统的平均负载越来越大,说明系统的负载越来越大。2. dmesg | tail
$ dmesg | tail[1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0[...][1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child[1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB, file-rss:0kB[2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request.Check SNMP counters.
使用这条命令来查看最近的 10 条系统消息,你可以看看是否有错误产生,如上面这个例子出现了 out of memory 和 Dropping request。如果 10 条内容不够可以使用 grep 进行搜索 或者使用 -n 参数查看更多 。3. vmstat 1
$ vmstat 1procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu----- rb swpdfreebuffcachesisobiboincs us sy id wa st3400 20088979273708 5918280005610 9613003200 20088992073708 591860000592 13284 4282 9811003200 20089011273708 5918600000 9501 2154 9910003200 20088956873712 59185600048 11900 2459 9900003200 20089020873712 5918600000 15898 4840 981100^C
vmstat 是 Virtual Meomory Statistics(虚拟内存统计)的缩写,这条命令可对操作系统的虚拟内存、进程、CPU 活动进行监控 。以参数 1 运行,1 秒钟打印一次 。参数说明如下 r:当前运行队列中线程的数目,r 值过大说明线程过多,就可能会出现 CPU 瓶颈了; b:等待 I/O 的进程数量;如果该值一直都很大,说明 I/O 比较繁忙,处理较慢; swpd:虚拟内存已使用的大小 free:空闲的物理内存的大小; buff:用作缓冲的内存大小,这里指的是对磁盘的缓冲;cache:用作缓存的内存大小;如果指的是文件系统的page cache si:每秒从交换区写到内存的大小 so:每秒写入交换区的内存大小 bi:每秒读取的块数; bo:每秒写入的块数;随机磁盘读写的时候,这 2 个值越大,能看到 CPU 在 I/O 等待的值(io_wait)也会越大; in:每秒中断数,包括时钟中断; cs:每秒上下文切换数; us:用户进程执行时间(user time); sy:系统进程执行时间(system time);id:空闲时间(idle 时间);wa:等待 I/O 时间;wa 的值高时,说明 I/O 等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈 。
4. mpstat -P ALL 1$ mpstat -P ALL 1linux 3.13.0-49-generic (titanclusters-xxxxx)07/14/2015_x86_64_ (32 CPU)07:38:49 PMCPU%usr%nice%sys %iowait%irq%soft%steal%guest%gnice%idle07:38:50 PMall98.470.000.750.000.000.000.000.000.000.7807:38:50 PM096.040.002.970.000.000.000.000.000.000.9907:38:50 PM197.000.001.000.000.000.000.000.000.002.0007:38:50 PM298.000.001.000.000.000.000.000.000.001.0007:38:50 PM396.970.000.000.000.000.000.000.000.003.03[...]
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 10个Mac小技巧,让你进阶大神
- 使用命令行浏览器在 Linux 终端上网浏览
- 八大菜系哪个菜最多 八大菜系受欢迎排行
- Docker容器的三种创建运行方式,一个比一个好用
- PHP Curl的简单使用
- 运维开发之paramiko远程执行命令实时返回
- 家里两个电视怎么共用一个网络机顶盒?
- 统一操作系统UOS个人版安装体验
- 关于Linux TCP接收缓存以及接收窗口的一个细节解析
- 绿茶类哪个好,信阳毛尖金骏眉哪个好