背景
服务器环境正常是运维同学负责管理的,但是开发同学在开发中肯定也是在模拟服务器环境中进行开发和调试的,出于对程序的功能、性能、安全等方面的关注,开发同学必然也是要关注程序运行过程中系统的各项指标负载,本篇主要是针对Linux环境下,从一个开发的视角,讨论需要关注的指标以及相应工具。
明确目标
我们需要关注的是什么,有一张总结非常好的图流传很广,上面介绍了很多针对系统各个模块的监控工具,优点是介绍的工具有非常多(其实这还只是其中一张图),对我造成的困扰也是工具非常多。。。因为毕竟不是做运维,在大部分开发过程中其实用不到这么多信息,我一般会简化一下,关注的更少一些
从硬件角度看,关注:CPU、内存、硬盘、网卡。
从系统角度看,关注:CPU负载、中断和上下文切换数量、内存占用和虚拟内存、硬盘IO、网络端口和流量。
硬件角度可以称为静态信息,一般是在开发和程序运行中不会改变的,比如CPU核心数量和频率、内存总量、硬盘总量等。
系统状态可以说是动态信息,是需要重点关注的,在程序运行中系统状态的变化,是判断程序性能等指标的重要依据。
静态信息 - 硬件信息
硬件信息比较简单,使用命令一目了然,一般也不会经常看。
CPU
cat /proc/cpuinfo
内存
free -m
硬盘
df -m
目录或文件大小
du -sh /root
网卡配置
ifconfig -a
路由配置
ip route
动态信息 - 系统信息
dstat
这个可以说是神器了,功能强大,UI友好,是我最喜欢也最常用的工具;使用非常简单,基本上系统状态都可以一目了然。CPU的负载、中断和上下文切换数量、IO数量都是在性能调试方面需要重点关注的指标。
dstat -cypmdn
htop
Dstat是从系统的视角出发,不会区分应用,如果要看某个进程或者哪些进程和应用负载特别高,就需要htop了,Htop是top的升级版,UI更友好,标注更清晰,也有更多交互命令。用法也很简单
上半边栏是系统整体负载信息,下半边栏是各个进程的信息
F1 可以查看帮助信息
F2可以设置展示的信息
netstat -nlpt
这个是非常高频使用的命令了,查看系统连接、端口占用情况等等。
Iftop,iptraf
两个都是用来查看网卡流量的,开发网络应用的同学可能会用的比较多,Web开发倒是用不多。
Iftop
Iptraf
至此,熟悉了上面这几个命令,在开发中,基本就可以对系程序和统运行情况有个差不多的掌握了,水平有限,难免有不足和疏漏,欢迎大家批评指正,共同交流进步~
领取专属 10元无门槛券
私享最新 技术干货