? ~ pidstat -w -t -C “ailaw” -l
这么看来,如果查看单个尤其是多线程的任务时候,pidstat比常用的ps更好使!
1.4 其他
当需要单独监测单个 CPU 情况的时候,除了 htop 还可以使用 mpstat,查看在 SMP 处理器上各个 Core 的工作量是否负载均衡,是否有某些热点线程占用 Core 。
? ~ mpstat -P ALL 1
如果想直接监测某个进程占用的资源,既可以使用top -u taozj的方式过滤掉其他用户无关进程,也可以采用下面的方式进行选择,ps命令可以自定义需要打印的条目信息:
while :; do ps -eo user,pid,ni,pri,pcpu,psr,comm | grep 'ailawd'; sleep 1; done如想理清继承关系,下面一个常用的参数可以用于显示进程树结构,显示效果比pstree详细美观的多
? ~ ps axjf
二、磁盘IO类
iotop 可以直观的显示各个进程、线程的磁盘读取实时速率;lsof 不仅可以显示普通文件的打开信息(使用者),还可以操作 /dev/sda1 这类设备文件的打开信息,那么比如当分区无法 umount 的时候,就可以通过 lsof 找出磁盘该分区的使用状态了,而且添加 +fg 参数还可以额外显示文件打开 flag 标记 。
2.1 IOStat
? ~ iostat -xz 1
其实无论使用 iostat -xz 1 还是使用 sar -d 1,对于磁盘重要的参数是:
√ avgqu-s:发送给设备 I/O 请求的等待队列平均长度,对于单个磁盘如果值>1表明设备饱和,对于多个磁盘阵列的逻辑磁盘情况除外
√ await(r_await、w_await):平均每次设备 I/O 请求操作的等待时间(ms),包含请求排列在队列中和被服务的时间之和;
√ svctm:发送给设备 I/O 请求的平均服务时间(ms),如果 svctm 与 await 很接近,表示几乎没有 I/O 等待,磁盘性能很好,否则磁盘队列等待时间较长,磁盘响应较差;
√ %util:设备的使用率,表明每秒中用于 I/O 工作时间的占比,单个磁盘当 %util>60% 的时候性能就会下降(体现在 await 也会增加),当接近100%时候就设备饱和了,但对于有多个磁盘阵列的逻辑磁盘情况除外;
还有,虽然监测到的磁盘性能比较差,但是不一定会对应用程序的响应造成影响,内核通常使用 I/O asynchronously 技术,使用读写缓存技术来改善性能,不过这又跟上面的物理内存的限制相制约了 。
上面的这些参数,对网络文件系统也是受用的 。
三、网络类
网络性能对于服务器的重要性不言而喻,工具 iptraf 可以直观的现实网卡的收发速度信息,比较的简洁方便通过 sar -n DEV 1 也可以得到类似的吞吐量信息,而网卡都标配了最大速率信息,比如百兆网卡千兆网卡,很容易查看设备的利用率 。
通常,网卡的传输速率并不是网络开发中最为关切的,而是针对特定的 UDP、TCP 连接的丢包率、重传率,以及网络延时等信息 。
3.1 netstat
? ~ netstat -s
显示自从系统启动以来,各个协议的总体数据信息 。虽然参数信息比较丰富有用,但是累计值,除非两次运行做差才能得出当前系统的网络状态信息,亦或者使用 watch 眼睛直观其数值变化趋势 。所以netstat通常用来检测端口和连接信息的:
netstat –all(a) –numeric(n) –tcp(t) –udp(u) –timers(o) –listening(l) –program(p)–timers可以取消域名反向查询,加快显示速度;比较常用的有
? ~ netstat -antp #列出所有TCP的连接
? ~ netstat -nltp #列出本地所有TCP侦听套接字,不要加-a参数
3.2 sar
sar 这个工具太强大了,什么 CPU、磁盘、页面交换啥都管,这里使用 -n 主要用来分析网络活动,虽然网络中它还给细分了 NFS、IP、ICMP、SOCK 等各种层次各种协议的数据信息,我们只关心 TCP 和 UDP 。下面的命令除了显示常规情况下段、数据报的收发情况,还包括
TCP
? ~ sudo sar -n TCP,ETCP 1

文章插图
√ active/s:本地发起的 TCP 连接,比如通过 connect(),TCP 的状态从CLOSED -> SYN-SENT
√ passive/s:由远程发起的 TCP 连接,比如通过 accept(),TCP 的状态从LISTEN -> SYN-RCVD
√ retrans/s(tcpRetransSegs):每秒钟 TCP 重传数目,通常在网络质量差,或者服务器过载后丢包的情况下,根据 TCP 的确认重传机制会发生重传操作
√ isegerr/s(tcpInErrs):每秒钟接收到出错的数据包(比如 checksum 失败)
UDP
? ~ sudo sar -n UDP 1
√ noport/s(udpNoPorts):每秒钟接收到的但是却没有应用程序在指定目的端口的数据报个数
推荐阅读
- 春茶该如何挑选与鉴别
- 看完这4个关键点 你比90%的茶人都知道如何买茶
- 如何挑选好的白毫银针
- 丰胸有氧健身操,作用如何
- 淘宝直播如何获得流量 淘宝直播流量分配原则
- 怎样算好茶 看汤色是否透亮
- 看色泽 闻香气来看茶叶是否过期
- 挑选普洱茶 除了看外观 汤色 还要闻气味
- 竹叶青茶如何选购
- 去伪存真话普洱 及如何购买普洱茶
