初学者对性能分析是个《横看成岭侧成峰,远近高低各不同。不识庐山真面目,只缘身在此山中。》那么应该怎么学习才能建立起自己的知识体系,才能做到《千山同一月,万户尽皆春。千江有水千江月,万里无云万里天》今天咱们谈谈7DGroup创始人高楼老师的性能分析之决策树分析法。
当物理内存不够时,linux 触发oom,将进程杀掉;可以使用vmstat可以展现给定时间间隔的服务器的状态值,包括Linux的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况,用于分析磁盘的压力在哪里,在swap,还是在load文件等
想深入了解内存工作原理可以查找资料继续学习与深造。
在分析CPU的时候咱们需要了解下,CPU可以做什么事情:
If a system is spending most of its time iowait when it should be doing work, it is most likely waiting for I/O from a device. It may be a disk, network card, or something else causing the slowdown.
在学习Linux disk I/O 先聊下磁盘系统结构:
磁盘通常被分成多个分区,分区设备的名称是通过将分区号添加到基本设备名称的末尾来创建的,每个单独的分区通常包含一个文件系统或一个交换分区,按照/etc/fstab中的指定,这些分区被装载到Linux根文件系统中。这些挂载的文件系统包含应用程序读写的文件。
当应用程序执行读或写操作时,Linux内核可能会将文件的副本存储在其缓存或缓冲区中,并在不访问磁盘的情况下返回所请求的信息。但是,如果Linux内核没有存储在内存中的数据副本,它会向磁盘的I/O队列添加一个请求。如果Linux内核注意到多个请求请求磁盘上的连续位置,它会将它们合并为一个大请求。这种合并消除了第二个请求的寻道时间,从而提高了总体磁盘性能。当请求被放入磁盘队列时,如果磁盘当前不忙,它将开始为I/O请求提供服务。如果磁盘正忙,请求将在队列中等待,直到驱动器可用,然后对其进行服务。
分析工具:
使用vmstat 中关于磁盘也就是 bo/bi/wa
参考命令:hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool
图片来自互联网
作为一名未来的全栈工程师,还是有必要了解每一层做什么,这样在解决性能问题能如鱼得水,如果想深入学习可以参加高老师课程,老师可以把大家讲明白。
命令:
ip -s link
简单解释:
sar -n DEV 1 2
sar -n SOCK 1 2
具体什么意思大家可以百度查询
也可使用命令:yum install iptraf
执行:iptraf-ng -d eth0 -t 1 就能看到相关信息
通过 iptraf-ng -s eth0 -t 10 命令就知道那个端口进出流量是多少
netstat
[-p] [-c] [–interfaces=<name>] [-s] [-t] [-u] [-w]
netstat -t -c
netstat -t -p
netstat -s -u
还有很多用法,大家可以参看帮助文档
在这一层咱们主要关注MEM ,既然是关注MEN,如果MEN高应该怎么去分析?怎么定位?
linux命令 free
In addition to the CPU statistics vmstat can provide, you can invoke vmstat with the following command-line options when investigating memory statistics:
复习观察Linux 内存信息命令
下面具体每个信息代表什么,大家百度查下,知识需要不断重复学习才能记住,网上有很多,只是把知识搬运过来,给大复习。
vmstat -m 显示的信息与cat /proc/slabinfo显示的信息相同
This describes in detail how the kernel's memory is allocated and can be helpful to determine what area of the kernel is consuming the most memory.
意思就是说:通过这个命令就能知道内存在那个区域消耗最多。
在学一个命令:vmstat -s
以上信息可以:准确跟踪内核如何使用其内存时非常有用
这一行可以观察出来内存情况
如果想进一步学习可以参考《Optimizing Linux Performance .chm》
想做好一件事,需要很多个知识点,但很多知识点需要不断学习、复习与思考才能在关键的时候用,上面知识相信大家都知道,但是否在关键的时候想起使用那个命令解决问题,如果没有想起,那么该知识点还是没有掌握与融汇贯通。