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