[TOC]

top

  • 通过-c来列出完整命令行,按P来按cpu占用率排序。
  • 在上面的基础下,通过-Hp来找到最耗资源的进程里最好资源的线程,按P来排序。top -Hp 19982

pstack/jstack

其中jstack适应于java程序,pstack适应于所有程序。用来显示每个进程的栈跟踪,里面的进程号是用十六进制显示的,所以在找到最耗资源的线程后,要转化为十六进制再过滤。

  • pstack 进程号

sar

sar -u 1 5
  • 查看CPU信息,CPU utilization statistics。看所有的CPU。

  • %iowait 显示用于等待I/O操作占用 CPU 总时间的百分比。%iowait 显示用于等待I/O操作占用 CPU 总时间的百分比。若 %iowait 的值过高,表示硬盘存在I/O瓶颈。

  • %idle 显示 CPU 空闲时间占用 CPU 总时间的百分比。若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量。

  • 若 %idle 的值持续低于 10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。

sar -b 1 5
  • 显示I/O和传送速率的统计信息。I/O and transfer rate statistics

  • tps 每秒钟物理设备的 I/O 传输总量

  • rtps 每秒钟从物理设备读入的数据总量

  • wtps 每秒钟向物理设备写入的数据总量

  • bread/s 每秒钟从物理设备读入的数据量,单位为 块/s

  • bwrtn/s 每秒钟向物理设备写入的数据量,单位为 块/s

sar -n DEV  2 5
  • -n 分析网络设备状态的统计,后面可以接的参数有 DEV、EDEV、NFS、NFSD、SOCK等。比如-n DEV

  • IFACE:设备名;

  • rxpck/s:每秒收到的包;

  • rxbyt/s:每秒收到的所有包的体积;

  • txbyt/s:每秒传输的所有包的体积;

  • rxcmp/s:每秒收到数据切割压缩的包总数;

  • txcmp/s :每秒传输的数据切割压缩的包的总数;

  • rxmcst/s: 每秒收到的多点传送的包;

如果想知道网络设备错误报告,也就就是用来查看设备故障的。应该用EDEV;

mpstat

mpstat提供多处理器系统中的cpu利用率统计。

mpstat -P ALL 1 10
  • -P用来指定哪个CPU,也可以mpstat -P 0 2 10

记录一个多核CPU负载不均衡问题

进程优先级,进程nice值和%nice的解释

参数 释义 从/proc/stat获得数据
CPU 处理器ID
%usr 在internal时间段里,用户态的CPU时间(%),不包含 nice值为负进程。 CPU一共花了多少比例的时间运行在用户态空间或者说是用户进程(running user space processes)。典型的用户态空间程序有:Shells、数据库、web服务器等。 usr/total*100
%nice 在internal时间段里,nice值为负进程的CPU时间(%) 表示改变过优先级的进程的占用CPU的百分比 nice/total*100
%sys 在internal时间段里,核心时间(%) CPU花了多少比例的时间在内核空间运行。分配内存、IO操作、创建子进程……都是内核操作。这也表明,当IO操作频繁时,System参数会很高。 system/total*100
%iowait 在internal时间段里,硬盘IO等待时间(%) iowait/total*100
%irq 在internal时间段里,硬中断时间(%) irq/total*100
%soft 在internal时间段里,软中断时间(%) softirq/total*100
%steal 显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比 steal/total*100
%guest 显示运行虚拟处理器时CPU花费时间的百分比 guest/total*100
%gnice gnice/total*100
%idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) idle/total*100

pidstat

pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

pidstat -u 1

pidstat -r 1

pidstat -d 1

分别统计CPU,内存,磁盘IO的信息。

pidstat也能统计线程分配了哪个CPU信息。

php重启

在5.3.3以后不再支持restart之类的命令了。需要使用信号控制,master理解的信号包括:

  • INT,TERM 立即终止

  • QUIT 平滑终止

  • USR1 重新打开日志文件

  • USR2 平滑重载所有worker进程并重新载入配置和二进制模块

kill -USR2 42891

如果有生成pid文件,则用如下方法:

kill -USR2 'cat /usr/local/php/var/run/php-fpm.pid'