[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
参数 | 释义 | 从/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'