Linux之《荒島余生》(一)準(zhǔn)備篇

關(guān)注微信公眾號(hào)“小姐姐味道” ,獲取最新文章。

xin片之爭(zhēng),已經(jīng)暴露了中國(guó)xin的問(wèn)題,我等碼農(nóng)束手無(wú)策;而在操作系統(tǒng)方面,成果也是乏善可陳;現(xiàn)如今酷炫的Web監(jiān)控工具,讓很多研發(fā)喪失了真正處理問(wèn)題的能力。

越接近底層,就越接近真相,在計(jì)算機(jī)的世界,同樣適用。

我們的目的,就像是《荒島余生》一樣:找到一個(gè)信念,在最殘酷的環(huán)境中,生存下去。說(shuō)的比較隱晦,其實(shí)就是:你換公司了,而你的新公司比較推崇devops,你要自己面對(duì)問(wèn)題。

吹的那么高大上,一副拯救世界的感覺(jué),但本系列的文章知識(shí)并不深,很多已經(jīng)在大學(xué)里的操作系統(tǒng)見(jiàn)過(guò)了,雖然照讀課本的叫獸并不能讓你勾起絲毫興趣。

如果本系列能夠勾起你的些許興趣,就算目的達(dá)到了。本來(lái)是想要聊仔細(xì)點(diǎn),但由于時(shí)間有限,又不是寫(xiě)書(shū),原理性的東西就不多說(shuō)了。

內(nèi)容

文章將會(huì)嘗試單純的Cpu、Mem、Net、Disk、IO問(wèn)題排查,然后組合各種元素,解決一些棘手問(wèn)題,就是一些常用命令的組合。當(dāng)然我們是java系的,所以會(huì)多一些java方面的討論。如果你不了解行文風(fēng)格,可以先讀讀:《Java堆外內(nèi)存排查小結(jié)--小姐姐味道》

15421816552644.jpg

為什么Linux系統(tǒng)會(huì)出現(xiàn)這樣那樣的問(wèn)題呢?主要的原因就是計(jì)算機(jī)的各個(gè)部件的速度不均衡。Cpu在等cache line,cache 在等內(nèi)存,內(nèi)存在等設(shè)備。就像在連續(xù)17公里高速下坡路口設(shè)個(gè)收費(fèi)站一樣,一不小心就車毀人亡。

設(shè)備五花八門,通常我們接觸的設(shè)備,就是硬盤(pán)和網(wǎng)卡。整個(gè)業(yè)務(wù)系統(tǒng)和操作系統(tǒng)充斥著各種各樣的緩沖區(qū),CPU要通過(guò)中斷負(fù)責(zé)他們之間的協(xié)調(diào)。這樣,會(huì)有很多地方會(huì)發(fā)生bottleneck。

監(jiān)控值

排查問(wèn)題也是有過(guò)程的。通常,關(guān)注一個(gè)硬件資源,比如CPU,我們關(guān)注以下基本要素:
1) 利用率 一般是瞬時(shí)值,屬于采樣范圍,用來(lái)判斷有沒(méi)有峰值。比如cpu utilization
2) 飽和度 一般指資源已完全使用,新請(qǐng)求在特定queue里排隊(duì)。比如cpu load過(guò)高
3) 錯(cuò)誤信息 硬件或者驅(qū)動(dòng)錯(cuò)誤,比如dmesg命令顯示的OOM
4) 聯(lián)想信息 對(duì)引起的原因進(jìn)行猜測(cè),并用更多的工具驗(yàn)證猜想。比如系統(tǒng)響應(yīng)慢猜測(cè)大量用到了swap

原因

監(jiān)控值只是一種表象,具體引起的原因才是重點(diǎn)。我們通常希望純粹的資源限制所引起的故障,這種問(wèn)題都比較好定位。大多數(shù)情況下都沒(méi)那么幸運(yùn),所以廣度上的信息共享能幫助很多。過(guò)程如下:

1) 信息收集 問(wèn)題起始時(shí)間,上下文
2) 改動(dòng)集合 問(wèn)題發(fā)生前所有變更列表
3) 問(wèn)題抽象 將描述抽象成具體的資源問(wèn)題
4) 問(wèn)題排查 將信息整理完畢,就可以進(jìn)行真正的荒野之旅了

測(cè)試

本測(cè)試用來(lái)決定你是不是本文目標(biāo)受眾,如果無(wú)法回答以下問(wèn)題,建議先看一點(diǎn)基本的Linux知識(shí),這將會(huì)節(jié)省你的時(shí)間,因?yàn)槲恼虏粫?huì)對(duì)此提太多。

io wait 是什么意思?

swap是什么分區(qū),怎么關(guān)閉?

/tmp目錄有什么特殊性?

管道是什么東東?

Linux發(fā)行版

接下來(lái)熱熱身,瞧瞧Linux有什么發(fā)行版。

15421172541816.jpg

我這里挑選了6個(gè)代表性的版本,版本聚焦的功能向?qū)I(yè)化和個(gè)性化發(fā)展。其中,Centos作為最常見(jiàn)的服務(wù)器版本,占據(jù)了大量的市場(chǎng)份額;Ubuntu在GUI和易用性上贏得了桌面用戶;Kali代表了向?qū)I(yè)化發(fā)展的一個(gè)分支。

個(gè)人使用時(shí)間最長(zhǎng)的是archlinux,尤其喜歡它的滾動(dòng)升級(jí)功能。但由于Centos在服務(wù)器端的市場(chǎng)份額實(shí)在太大,我們以下的討論都基于Centos。

據(jù)不完全統(tǒng)計(jì),已經(jīng)有上千個(gè)linux版本,見(jiàn)下圖(高清大圖見(jiàn) https://distrowatch.com/images/other/distro-family-tree.png )。你來(lái)告訴我,紅旗、麒麟的位置在哪里。

15420963774982.jpg

將常用腳本加入到PATH中

有些命令組合不好記,頻繁輸入也覺(jué)得煩,可以將這些過(guò)程整理成腳本,扔到path中。

還記得第一次安裝jdk,添加的環(huán)境變量么?Linux和它類似,不過(guò)它有多種shell

通常我們用的叫bash,平常說(shuō)的shell腳本就是bash腳本。但也有很多其他好用的shell,比如csh、ksh、zsh等。

查看/etc/shells文件看一下你安裝過(guò)的shell

[root@localhost ~]$ cat /etc/shells
/bin/sh
/bin/bash
/bin/zsh
/sbin/nologin
/bin/dash

在個(gè)人領(lǐng)域,zsh配合oh-my-zsh(推薦)達(dá)到最佳,但服務(wù)器一般不會(huì)去改你的shell,通過(guò)一個(gè)環(huán)境變量,能夠看到你當(dāng)前所使用的shell終端。

[root@localhost ~]$ echo $SHELL
/bin/bash

針對(duì)于bash,我們的配置就在用戶目錄下的.bashrc文件中。

在用戶目錄下創(chuàng)建.bin目錄

mkdir ~/.bin

將目錄加入到環(huán)境變量PATH中

echo "export PATH=\$PATH:~/.bin/" >> ~/.bashrc

在.bin創(chuàng)建一個(gè)文件xjj,內(nèi)容為
echo "pleasant taste"

cat > ~/.bin/xjj <<EOF
echo "pleasant taste"
EOF

給xjj增加可執(zhí)行權(quán)限

chmod a+x ~/.bin/xjj 

這樣,使用你的用戶,在任何地方,都可以執(zhí)行xjj了

[root@localhost ~]$ xjj
pleasant taste

真是令人愉悅的味道~

0.jpeg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 悄悄地寫(xiě)給我的老朱的一封小情書(shū),在一起的第一個(gè)七夕,很抱歉沒(méi)有和你在一起,禮物估計(jì)今天也都到不了(結(jié)果我還...
    小抗體閱讀 373評(píng)論 0 0
  • 目錄 接上節(jié)(連載)《石猿記》第十二章(47) 話說(shuō)小童玉靈兒,手痛方知上當(dāng),正欲發(fā)難,卻見(jiàn)那老龍,喜笑中,連連做...
    魯西道童閱讀 592評(píng)論 0 3
  • 累了,就停下來(lái)休息。休息好了,繼續(xù)向前。這是我聽(tīng)一位榜樣說(shuō)的。 可不能成為放縱自己的理由。真正的高手一直自律,一直堅(jiān)持。
    楷子子閱讀 194評(píng)論 0 0

友情鏈接更多精彩內(nèi)容