xin片之爭,已經暴露了中國xin的問題,我等碼農一籌莫展;而在操做系統方面,成果也是乏善可陳;現現在酷炫的Web監控工具,讓不少研發喪失了真正處理問題的能力。java
越接近底層,就越接近真相,在計算機的世界,一樣適用。linux
咱們的目的,就像是《荒島餘生》同樣:找到一個信念,在最殘酷的環境中,生存下去。說的比較隱晦,其實就是:你換公司了,而你的新公司比較推崇devops,你要本身面對問題。shell
吹的那麼高大上,一副拯救世界的感受,但本系列的文章知識並不深,不少已經在大學裏的操做系統見過了,雖然照讀課本的叫獸並不能讓你勾起絲毫興趣。bash
若是本系列可以勾起你的些許興趣,就算目的達到了。原本是想要聊仔細點,但因爲時間有限,又不是寫書,原理性的東西就很少說了。服務器
文章將會嘗試單純的Cpu、Mem、Net、Disk、IO問題排查,而後組合各類元素,解決一些棘手問題,就是一些經常使用命令的組合。固然咱們是java系的,因此會多一些java方面的討論。若是你不瞭解行文風格,能夠先讀讀:《Java堆外內存排查小結--小姐姐味道》工具
爲何Linux系統會出現這樣那樣的問題呢?主要的緣由就是計算機的各個部件的速度不均衡。Cpu在等cache line,cache 在等內存,內存在等設備。就像在連續17千米高速下坡路口設個收費站同樣,一不當心就車毀人亡。測試
設備五花八門,一般咱們接觸的設備,就是硬盤和網卡。整個業務系統和操做系統充斥着各類各樣的緩衝區,CPU要經過中斷負責他們之間的協調。這樣,會有不少地方會發生bottleneck。spa
排查問題也是有過程的。一般,關注一個硬件資源,好比CPU,咱們關注如下基本要素:
1) 利用率 通常是瞬時值,屬於採樣範圍,用來判斷有沒有峯值。好比cpu utilization
2) 飽和度 通常指資源已徹底使用,新請求在特定queue裏排隊。好比cpu load太高
3) 錯誤信息 硬件或者驅動錯誤,好比dmesg
命令顯示的OOM
4) 聯想信息 對引發的緣由進行猜想,並用更多的工具驗證猜測。好比系統響應慢猜想大量用到了swap操作系統
監控值只是一種表象,具體引發的緣由纔是重點。咱們一般但願純粹的資源限制所引發的故障,這種問題都比較好定位。大多數狀況下都沒那麼幸運,因此廣度上的信息共享能幫助不少。過程以下:3d
1) 信息收集 問題起始時間,上下文
2) 改動集合 問題發生前全部變動列表
3) 問題抽象 將描述抽象成具體的資源問題
4) 問題排查 將信息整理完畢,就能夠進行真正的荒野之旅了
本測試用來決定你是否是本文目標受衆,若是沒法回答如下問題,建議先看一點基本的Linux知識,這將會節省你的時間,由於文章不會對此提太多。
接下來熱熱身,瞧瞧Linux有什麼發行版。
我這裏挑選了6個表明性的版本,版本聚焦的功能向專業化和個性化發展。其中,Centos做爲最多見的服務器版本,佔據了大量的市場份額;Ubuntu在GUI和易用性上贏得了桌面用戶;Kali表明了向專業化發展的一個分支。
我的使用時間最長的是archlinux,尤爲喜歡它的滾動升級功能。但因爲Centos在服務器端的市場份額實在太大,咱們如下的討論都基於Centos。
據不徹底統計,已經有上千個linux版本,見下圖(高清大圖見 https://distrowatch.com/image... )。你來告訴我,紅旗、麒麟的位置在哪裏。
有些命令組合很差記,頻繁輸入也以爲煩,能夠將這些過程整理成腳本,扔到path中。
還記得第一次安裝jdk,添加的環境變量麼?Linux和它相似,不過它有多種shell
。
一般咱們用的叫bash
,日常說的shell腳本就是bash腳本。但也有不少其餘好用的shell,好比csh、ksh、zsh等。
查看/etc/shells文件看一下你安裝過的shell
[root@localhost ~]$ cat /etc/shells /bin/sh /bin/bash /bin/zsh /sbin/nologin /bin/dash
在我的領域,zsh配合oh-my-zsh(推薦)達到最佳,但服務器通常不會去改你的shell,經過一個環境變量,可以看到你當前所使用的shell終端。
[root@localhost ~]$ echo $SHELL /bin/bash
針對於bash,咱們的配置就在用戶目錄下的.bashrc
文件中。
在用戶目錄下建立.bin
目錄
mkdir ~/.bin
將目錄加入到環境變量PATH中
echo "export PATH=\$PATH:~/.bin/" >> ~/.bashrc
在.bin建立一個文件xjj,內容爲
echo "pleasant taste"
cat > ~/.bin/xjj <<EOF echo "pleasant taste" EOF
給xjj增長可執行權限
chmod a+x ~/.bin/xjj
這樣,使用你的用戶,在任何地方,均可以執行xjj了
[root@localhost ~]$ xjj pleasant taste
真是使人愉悅的味道~