当前位置 主页 > 服务器问题 > Linux/apache问题 >

    该从这几类去分析Linux问题故障

    栏目:Linux/apache问题 时间:2019-07-19 10:45

       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