我终于要对运维小哥下手了
当我再次收到运维小哥的警告的时候,我醒悟了。
你以为我又要去写 Bug ?
是的,这就是被运维恐吓的日常,在这个男人面前我就是个弟弟。
之前学习 Linux 命令的时候有学到 man 的使用,还有它的进阶版本 info 他可以更详细的查询命令手册
所以我们掌握了它们之后就可以完成从无处下手到有迹可循的蜕变。
先从下面这张图开始搞起。
是不是有点懵逼,没关系我也是。
我们简单分析一下,我们代码在系统上跑,最大的就是 CPU,内存,网络和磁盘I/O这四大部分。
我们只要掌握几个常用的简单的命令知道这四个部分是不是有问题就好了。
CPU 最关键的就两个部分,系统的 CPU 使用率还有就是进程的使用率。
先看看 CPU 使用率我们常用的是 top , 效果是下面这样的,简单明了。
us:表示用户空间程序的cpu使用率
sy:表示系统空间的cpu使用率,主要是内核程序。
ni:表示用户空间且通过nice调度过的程序的cpu使用率。
id:空闲cpu
wa:cpu运行时在等待io的时间
hi:cpu处理硬中断的数量
si:cpu处理软中断的数量
st:被虚拟机偷走的cpu
这里再推荐另一个小工具,dstat
可以使用yum install dstat
安装
dtat 可以同时查看到 cpu,磁盘,网络的使用率,方便。
查看进程就比较简单了,直接使用 ps 就可以了。
很多朋友以为 Python 作为动态语言又有垃圾回收机制应该不会出现内存泄露的问题。
但是像下面这两种情况就容易导致内存泄露
1.对象一直被全局变量所引用, 全局变量生命周期长.2.垃圾回收机被禁用或者设置成debug状态, 垃圾回收的内存不会被释放.
所以掌握内存使用率的查看也是很有必要的。
最简单的使用 free 就可以查看系统内存的使用,剩余等参数
free 展示的是比较简单的内存信息,查看详细一点的信息可以使用 vmstat
而进程的内存分析使用还是上面提到过的 ps 和 top 两个命令,可以同时查看进程的 CPU 使用率和内存的使用率
当你收到内存不足的告警时,首先可以从监控系统中。找出占用内存最多的几个进程。然后,再根据这些进程的内存占用历史,观察是否存在内存泄漏问题。确定出最可疑的进程后, 分析该进程的内存空间或者内存分配,最后弄清楚进程为 什么会占用大量内存
网络比较常用的工具是 iftop
同样也是先安装,在 centos 中需要先安装yum install epel-release
之后再安装yum install iftop
就可以很顺利的安装上了。
使用 iftop 可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。
中间的<= =>这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
磁盘 IO 读写信息的查看我比较常用的是 iostat
还是先安装,因为 iostat 是 sysstat 工具集的子集,所以我们需要先安装 sysstat 。
yum install sysstat
接着可以用iostat -dx
查看磁盘的扩展信息
r/s 和 w/s 分别是每秒的读操作和写操作,而rKB/s 和wKB/s 列以每秒千字节为单位显示了读和写的数据量
上面就是我简单优化 linux 系统的第一步,简单通过工具就可以完成。
当然上面需要在运行环境上安装包的操作,最好和运维小哥了解学习下,不要自己瞎装,删库跑路的操作不是只存在与段子里。