我終於要對運維小哥下手了
當我再次收到運維小哥的警告的時候,我醒悟了。
你以爲我又要去寫 Bug ?
是的,這就是被運維恐嚇的日常,在這個男人面前我就是個弟弟。
Bug 寫的多了,總免不了要收到兩條這樣那樣的小告警,所以我決定還是自己學一些 Linux 優化的小知識,做到先發致人。
如何做到硬剛運維小哥
之前學習 Linux 命令的時候有學到 man 的使用,還有它的進階版本 info 他可以更詳細的查詢命令手冊
所以我們掌握了它們之後就可以完成從無處下手到有跡可循的蛻變。
先從下面這張圖開始搞起。
是不是有點懵逼,沒關係我也是。
我們簡單分析一下,我們代碼在系統上跑,最大的就是 CPU,內存,網絡和磁盤I/O這四大部分。
我們只要掌握幾個常用的簡單的命令知道這四個部分是不是有問題就好了。
CPU
CPU 最關鍵的就兩個部分,系統的 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,磁盤,網絡的使用率,方便。
進程 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
磁盤 IO 讀寫信息的查看我比較常用的是 iostat
還是先安裝,因爲 iostat 是 sysstat 工具集的子集,所以我們需要先安裝 sysstat 。
yum install sysstat
接着可以用iostat -dx 查看磁盤的擴展信息
r/s 和 w/s 分別是每秒的讀操作和寫操作,而rKB/s 和wKB/s 列以每秒千字節爲單位顯示了讀和寫的數據量
總結
上面就是我簡單優化 linux 系統的第一步,簡單通過工具就可以完成。
當然上面需要在運行環境上安裝包的操作,最好和運維小哥瞭解學習下,不要自己瞎裝,刪庫跑路的操作不是隻存在與段子裏。
你以爲到這就完了?
不,因爲今天鹹魚恰飯了,所以準備送點小禮物給大家。
之前在交流羣裏抽了一份極客時間的 Linux 地圖,自己忍不住也剁手了一份。
到手發現這個冊子的內容也太全了,所以今天我準備抽兩份送給大家,好東西要一起分享。