该从这几类去解析Linux问题故障
CPU 对于应用程序来说,内核CPU调度器功能和性能是最容易受到关注的。而线程状态的分类一般分为: a. on-CPU:执行中,执行中的时间通常又分为用户态时间user和系统态时间sys。 b. off-CPU:等待下一轮上CPU,或者等待I/O、锁、换页等等,其状态可以细分为可执行、匿名换页、睡眠、锁、空闲等状态。 如果大量时间花在CPU上,对CPU的剖析能够迅速解释原因;如果系统时间大量处于off-cpu状态,定位问题就会费时很多。 //查看系统cpu使用情况 top //查看所有cpu核信息 mpstat -P ALL 1 //查看cpu使用情况以及平均负载 vmstat 1 //进程cpu的统计信息 pidstat -u 1 -p pid //跟踪进程内部函数级cpu使用情况 perf top -p pid -e cpu-clock 内存 内存出现问题可能不只是影响性能,而是影响服务或者引起其他问题, //查看系统内存使用情况 free -m //虚拟内存统计信息 vmstat 1 //查看系统内存情况 top //1s采集周期,获取内存的统计信息 pidstat -p pid -r 1 //查看进程的内存映像信息 pmap -d pid //检测程序内存问题 valgrind --tool=memcheck --leak-check=full --log-file=./log.txt ./程序名 磁盘IO 磁盘通常是计算机最慢的子系统,也是最容易出现性能瓶颈的地方,因为磁盘离 CPU 距离最远而且 CPU 访问磁盘要涉及到机械操作,比如转轴、寻轨等。 //查看系统io信息 iotop //统计io详细信息 iostat -d -x -k 1 10 //查看进程级io的信息 pidstat -d 1 -p pid //查看系统IO的请求,比如可以在发现系统IO异常时,可以使用该命令进行调查,就能指定到底是什么原因导致的IO异常 perf record -e block:block_rq_issue -ag ^C perf report 网络 网络的监测是所有 Linux 子系统里面最复杂的,有太多的因素在里面,比如:延迟、阻塞、冲突、丢包等, //显示网络统计信息 netstat -s //显示当前UDP连接状况 netstat -nu //显示UDP端口号的使用情况 netstat -apu //统计机器中网络连接各个状态个数 netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' //显示TCP连接 ss -t -a //显示sockets摘要信息 ss -s //显示所有udp sockets ss -u -a //tcp,etcp状态 sar -n TCP,ETCP 1 //查看网络IO sar -n DEV 1 //抓包以包为单位进行输出 tcpdump -i eth1 host 192.168.1.1 and port 80 //抓包以流为单位显示数据内容 tcpflow -cp host 192.168.1.1 系统负载 //查看负载情况 uptime top vmstat //统计系统调用耗时情况 strace -c -p pid //跟踪指定的系统操作例如epoll_wait strace -T -e epoll_wait -p pid //查看内核日志信息 dmesg (编辑:银川站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |