推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习
1.开启命令终端
Ctrl+Alt+t
2.放大缩小
Ctrl+Alt++ / Ctrl±
3.停靠
window+↑
4.free -m
注意交换分区使用量,如果内存不足,就会使用交换分区。如果used不是0的话,就要注意了。
5.top
- us:用户态,程序计算耗掉了cpu。
- sy:系统态,调用了系统函数,比如你在系统级加锁或者网络操作。
- diel:空闲,如果低到10%,那你的load值也会比较高。
- wa:磁盘等待IO的一个比例时间,如果它的值不会高与1,如果高于1说明等待磁盘的时间非常多,访问磁盘慢对性能产生了影响。
- si:表示软中断,大部分出现网络请求,如果你的机器有大量的网络负载,处理网卡软中断的请求就会比较高,机器有很重的网络负载。
- st:虚拟机环境,如果虚拟机比较繁忙,超麦情况严重。
- virt:程序分配过多少内存,创建了不一定会使用。
- res:实际使用的内存。
- shr:共享内存。
- H:显示线程使用情况。
6.iotop
磁盘io方面的指标,可以告诉你的磁盘为什么繁忙,因为哪个进程而繁忙,导致的异常的磁盘读写。
7、perf top
为什么系统负载高,究竟是哪一个系统调用比较高。
8.sar
网络分析工具
- sar -n DEV 1 网络链路层,每张网卡的网络负载
- sar -n TCP 1
- sar -n ETCP 1 错误指标
9.vmstat 1
- procs:进程相关,r运行多少,b阻塞多少。如果running太高,表示进程线程数量太多,cpu开始排队。block太高表示夯在磁盘IO上。
- memory:内存方面一般不在这里看。
- si:tcp的短连接,网卡的软中断就会特别高,对网络性能有影响。
- bi,bo:磁盘IO。
- CPU:cs表示上下文切换,通常不会超过10万,最高不会超过20万。上下文切换太高,表示线程切换太频繁了。us表示程序是计算型,耗费了大量cpu做计算。sy系统态,除非程序大量的网络IO,否则不应该很高的cs,cs很高说明程序的系统调用太密集太频繁了。系统太很高,程序的性能是不会很高的。wa表示磁盘io方面很高,不能因为磁盘慢而导致程序的性能。
10.iostat -x 1
观察磁盘的IO情况,针对每个磁盘的块设备去说的。x扩展信息,1表示间隔。
%util如果这个值很高,是机械盘,磁头已经满天乱飞了,说明随机读写对这块磁盘产生了很大的影响。到50%-60%,程序一定有不合理利用,程序有一个聚合读写不要随机对写。
11.ss -s
ss -t TCP连接状态。
ss -t -l listen状态,send-Q back-log握手队列的长度,如果很大表明accept连接已经丢失了一部分,大量的短连接过来。
13.netstat -s
这是一个非常重要的指标。
14.conntrack -S
流表,如果值过高说明内核和网络协议栈遇到瓶颈,需要特别关注。