前言
祁東ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
I/O Wait是一個需要使用高級的工具來debug問題原因,當(dāng)然也有許多基本工具的高級用法。I/O wait的問題難以定位的原因是:因為我們有很多工具可以告訴你I/O 受限了,但是并沒有告訴你具體是哪個進程引起的。
1. 如何確認,是否是I/O問題導(dǎo)致系統(tǒng)緩慢
確認是否是I/O導(dǎo)致的系統(tǒng)緩慢我們可以使用多個命令,但是,最簡單的是unix的命令 top
# top
top - 14:31:20 up 35 min, 4 users, load average: 2.25, 1.74, 1.68
Tasks: 71 total, 1 running, 70 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.3%us, 1.7%sy, 0.0%ni, 0.0%id, 96.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 245440k total, 241004k used, 4436k free, 496k buffers
Swap: 409596k total, 5436k used, 404160k free, 182812k cached
從CPU這行,可以發(fā)現(xiàn)CPU的io wait;這里是96.0%。越高就代表CPU用于io wait的資源越多。
2. 找出哪個磁盤正在被寫入
上邊的top命令從一個整體上說明了I/O wait,但是并沒有說明是哪塊磁盤影響的,想知道是哪塊磁盤引發(fā)的問題,可以使用另外一個命令 iostat 命令
$ iostat -x 2 5
avg-cpu: %user %nice %system %iowait %steal %idle
3.66 0.00 47.64 48.69 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 44.50 39.27 117.28 29.32 11220.94 13126.70 332.17 65.77 462.79 9.80 2274.71 7.60 111.41
dm-0 0.00 0.00 83.25 9.95 10515.18 4295.29 317.84 57.01 648.54 16.73 5935.79 11.48 107.02
dm-1 0.00 0.00 57.07 40.84 228.27 163.35 8.00 93.84 979.61 13.94 2329.08 10.93 107.02
iostat 會每2秒更新一次,一共打印5次信息, -x 的選項是打印出擴展信息
第一個iostat 報告會打印出系統(tǒng)最后一次啟動后的統(tǒng)計信息,這也就是說,在多數(shù)情況下,第一個打印出來的信息應(yīng)該被忽略,剩下的報告,都是基于上一次間隔的時間。舉例子來說,這個命令會打印5次,第二次的報告是從第一次報告出來一個后的統(tǒng)計信息,第三次是基于第二次 ,依次類推
所以,一定記?。旱谝粋€忽略!
在上面的例子中,sda的%utilized 是111.41%,這個很好的說明了有進程正在寫入到sda磁盤中。
除了%utilized 外,我們可以從iostat得到更加豐富的資源信息,例如每毫秒讀寫請求(rrqm/s wrqm/s)),每秒讀寫的((r/s w/s)。在上邊的例子中,我們的項目看起來正在讀寫非常多的信息。這個對我們查找相應(yīng)的進程非常有用。
3. 找出導(dǎo)致高IO的進程
# iotop
Total DISK READ: 8.00 M/s | Total DISK WRITE: 20.36 M/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
15758 be/4 root 7.99 M/s 8.01 M/s 0.00 % 61.97 % bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp
最簡單的方法就是用iotop找出哪個進程用了最多的存儲資源,從上面可以看到是bonnie++。
iotop很好用,但是不是默認安裝的。
如果沒有iotop,下面的方式也可以讓你有種方法縮小范圍,盡快找到是哪個進程。
ps 命令對內(nèi)存和CPU有一個統(tǒng)計,但是他沒有對磁盤I/O的統(tǒng)計,雖然他沒有顯示磁盤I/O,但是它顯示進行的狀態(tài),我們可以用來知道一個進程是否正在等待I/O
主要的進程狀態(tài)有:
PROCESS STATE CODES
D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped, either by a job control signal or because it is being traced.
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by its parent.
等待I/O的進程的狀態(tài)一般是“uninterruptible sleep”,或者“D”,我們可以很容易的查找到正在等待I/O的進程
# for x in `seq 1 1 10`; do ps -eo state,pid,cmd | grep "^D"; echo "----"; sleep 5; done
D 248 [jbd2/dm-0-8]
D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp
----
D 22 [kswapd0]
D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp
----
D 22 [kswapd0]
D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp
----
D 22 [kswapd0]
D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp
----
D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp
上邊的例子會循環(huán)的輸出狀態(tài)是D的進程,每5秒一次,一共10次
從輸出我們可以知道 bonnie++ 的pid是16528 ,在waiting,bonnie++看起來就是我們想找到的進程,但是,只是從它的狀態(tài),我們沒有辦法證明就是bonnie++引起的I/O等待。
為了證明,我們可以可以查看/proc,每個進程目錄下都有一個叫io的文件,里邊保存這和iotop類似的信息。
# cat /proc/16528/io
rchar: 48752567
wchar: 549961789
syscr: 5967
syscw: 67138
read_bytes: 49020928
write_bytes: 549961728
cancelled_write_bytes: 0
read_bytes和write_bytes是這個進程從磁盤讀寫的字節(jié),在這個例子中,bonnie++進程讀取了46M的數(shù)據(jù)并且寫入了524MB的數(shù)據(jù)到磁盤上。
4. 找出哪個文件正在被大量寫入
lsof 命令可以展示一個進程打開的所有文件。從這個列表中,我們可以找到哪個文件被寫入。
# lsof -p 16528
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bonnie++ 16528 root cwd DIR 252,0 4096 130597 /tmp
truncated
bonnie++ 16528 root 8u REG 252,0 501219328 131869 /tmp/Bonnie.16528
bonnie++ 16528 root 9u REG 252,0 501219328 131869 /tmp/Bonnie.16528
bonnie++ 16528 root 10u REG 252,0 501219328 131869 /tmp/Bonnie.16528
bonnie++ 16528 root 11u REG 252,0 501219328 131869 /tmp/Bonnie.16528
bonnie++ 16528 root 12u REG 252,0 501219328 131869 strong/tmp/Bonnie.16528/strong
# df /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/workstation-root 7667140 2628608 4653920 37% /
# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name workstation
PV Size 7.76 GiB / not usable 2.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1986
Free PE 8
Allocated PE 1978
PV UUID CLbABb-GcLB-l5z3-TCj3-IOK3-SQ2p-RDPW5S
使用pvdisplay可以看到,pv設(shè)備就是/dev/sda5,正是我們前面找到的sda。
參考文檔:
你想問得是php如何執(zhí)行shell命令把?\x0d\x0a\x0d\x0a可以用system(),exec(),passthru()這三個函數(shù)實現(xiàn)\x0d\x0a雖然這三個命令都能執(zhí)行l(wèi)inux系統(tǒng)的shell命令,但是其實他們是有區(qū)別的:\x0d\x0a system() 輸出并返回最后一行shell結(jié)果。\x0d\x0a exec() 不輸出結(jié)果,返回最后一行shell結(jié)果,所有結(jié)果可以保存到一個返回的數(shù)組里面。\x0d\x0a passthru() 只調(diào)用命令,把命令的運行結(jié)果原樣地直接輸出到標(biāo)準(zhǔn)輸出設(shè)備上。\x0d\x0a 相同點:都可以獲得命令執(zhí)行的狀態(tài)碼\x0d\x0a例子:system("ls -al");\x0d\x0a【使用之前要在php.ini中把safe_mode關(guān)閉】
top命令是Linux下常用的性能分析工具,能夠?qū)崟r顯示系統(tǒng)中各個進程的資源占用狀況,類似于Windows的任務(wù)管理器。下面詳細介紹它的使用方法。
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 191272k total, 173656k used, 17616k free, 22052k buffers
Swap: 192772k total, 0k used, 192772k free, 123988k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd
14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top
1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
統(tǒng)計信息區(qū)前五行是系統(tǒng)整體的統(tǒng)計信息。第一行是任務(wù)隊列信息,同 uptime 命令的執(zhí)行結(jié)果。其內(nèi)容如下:
01:06:48 當(dāng)前時間
up 1:22 系統(tǒng)運行時間,格式為時:分
1 user 當(dāng)前登錄用戶數(shù)
load average: 0.06, 0.60, 0.48 系統(tǒng)負載,即任務(wù)隊列的平均長度。
三個數(shù)值分別為 1分鐘、5分鐘、15分鐘前到現(xiàn)在的平均值。
第二、三行為進程和CPU的信息。當(dāng)有多個CPU時,這些內(nèi)容可能會超過兩行。內(nèi)容如下:
Tasks: 29 total 進程總數(shù)
1 running 正在運行的進程數(shù)
28 sleeping 睡眠的進程數(shù)
0 stopped 停止的進程數(shù)
0 zombie 僵尸進程數(shù)
Cpu(s): 0.3% us 用戶空間占用CPU百分比
1.0% sy 內(nèi)核空間占用CPU百分比
0.0% ni 用戶進程空間內(nèi)改變過優(yōu)先級的進程占用CPU百分比
98.7% id 空閑CPU百分比
0.0% wa 等待輸入輸出的CPU時間百分比
0.0% hi
0.0% si
最后兩行為內(nèi)存信息。內(nèi)容如下:
Mem: 191272k total 物理內(nèi)存總量
173656k used 使用的物理內(nèi)存總量
17616k free 空閑內(nèi)存總量
22052k buffers 用作內(nèi)核緩存的內(nèi)存量
Swap: 192772k total 交換區(qū)總量
0k used 使用的交換區(qū)總量
192772k free 空閑交換區(qū)總量
123988k cached 緩沖的交換區(qū)總量。
內(nèi)存中的內(nèi)容被換出到交換區(qū),而后又被換入到內(nèi)存,但使用過的交換區(qū)尚未被覆蓋,
該數(shù)值即為這些內(nèi)容已存在于內(nèi)存中的交換區(qū)的大小。
相應(yīng)的內(nèi)存再次被換出時可不必再對交換區(qū)寫入。
進程信息區(qū)統(tǒng)計信息區(qū)域的下方顯示了各個進程的詳細信息。首先來認識一下各列的含義。
序號 列名 含義
a PID 進程id
處理問題時必定不能盲狙,將所有解決辦法都試上一遍。這生產(chǎn)環(huán)境中,解決出現(xiàn)的問題是最優(yōu)先的事情,當(dāng)然前提是這問題會影響用戶的使用或即將影響到的。
處理每個問題必然可按具體問題進行分類,根據(jù)每一類按對應(yīng)的解決思路來執(zhí)行。
但像處理一個網(wǎng)絡(luò)問題的時候,上至系統(tǒng)防火墻的配置、下至硬件故障。如果處理一個問題都按固定流程來進行的話,那必然效率將非常低下。下為處理網(wǎng)絡(luò)故障的一般流程。
1、網(wǎng)絡(luò)硬件問題檢查。???????????????????? (機率較低)
2、檢查網(wǎng)卡能否正常工作。??????????? (較高、主要表現(xiàn)為人為配置錯誤)
3、檢查局域網(wǎng)之間聯(lián)機是否正常。(非常高)
4、檢查DNS是否設(shè)定正確。??????????? (較低)
5、服務(wù)是否正常打開。???????????????????? (低)
6、檢查訪問權(quán)限是否打開。??????????? (較高)
假如從1至6是標(biāo)準(zhǔn)的處理網(wǎng)絡(luò)問題的流程,這樣的處理方式效率低下。處理問題可以有整體的流程,但是實際操作中可先對出現(xiàn)機率更高的步驟進行檢查、或采取2分法縮小產(chǎn)生問題的范圍,雖然上述較的兩個方法不一定對所有問題都試用,但對于大多數(shù)的網(wǎng)絡(luò)問題來說處理效率有者顯著的提升。
個人總結(jié)的情況如下。
1、lsmod | grep ip??????????? 查看相關(guān)的網(wǎng)卡模塊是否已加載
2、ifconfig -a??????????????????? 能使用該命令查找到對應(yīng)網(wǎng)卡配置信息,則說明網(wǎng)卡驅(qū)動程序正常
3、使用ping命令、依次ping自己、ping局域網(wǎng)主機、ping網(wǎng)關(guān)
ping自己異常,問題:服務(wù)異常、網(wǎng)卡配置未生效
ping局域網(wǎng)主機異常,問題:配置文件有誤、網(wǎng)卡配置未生效、網(wǎng)線損壞
ping網(wǎng)關(guān)異常,問題:配置文件有誤、網(wǎng)卡配置未生效
4、當(dāng)前3步還不能正常上外網(wǎng)的話。所有route查看默認路由表。
處理方法:刪除不必要的路由信息,并保證默認路由是從對應(yīng)網(wǎng)關(guān)地址出去的。
5、臨時停止iptables服務(wù)、SELinux服務(wù)、NetworkManager服務(wù)
6、如能上網(wǎng)但訪問域名有異常時,那將需要檢查/etc/hosts、/etc/resolv.conf兩個配置
7、假如以上6步檢查完畢之后,還發(fā)現(xiàn)不能上網(wǎng)。有如下可能。
7.1、主機MAC地址被路由器禁止上網(wǎng)
7.2、外網(wǎng)服務(wù)異常。如寬帶賬號欠費、光纖被挖斷等物理攻擊。
標(biāo)題名稱:linux命令思路 linux命令用法
文章路徑:http://jinyejixie.com/article4/ddojiie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、微信小程序、軟件開發(fā)、手機網(wǎng)站建設(shè)、、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)