Load是用來度量伺服器工作量的大小,即計算機cpu任務執行隊列的長度,值越大,表明包括正在運作和待運作的程序數越多。
可以通過w,top,uptime,procinfo指令,也可以通過/proc/loadavg檔案檢視。
procinfo工具安裝請參考Linux環境下安裝軟體。
伺服器負載(load/load average)是根據程序隊列的長度來顯示的。
當伺服器出現負載高的現象時(建議以15分鐘平均值為參考),可能是由于CPU資源不足,I/O讀寫瓶頸,記憶體資源不足等原因造成,也可能是由于CPU正在進行密集型計算。
建議使用vmstat -x,iostat,top指令判斷負載過高的原因,然後找到具體占用大量資源的程序進行優化處理。
可以通過free,top(執行後可通過shitf+m對記憶體排序),vmstat,procinfo指令,也可以通過/proc/meminfo檔案檢視。
可以使用top -p PID,pmap -x PID,ps aux|grep PID指令,也可以通過/proc/$process_id(程序的PID)/status檔案檢視,例如/proc/7159/status檔案。
可以使用netstat -tunlp,netstat -antup,lsof -i:PORT指令檢視。
可以使用ps auxww|grep PID,ps -ef,lsof -p PID,top -p PID指令檢視。
可以使用kill -9 PID(程序号),killall 程式名(比如killall cron)來殺死程序。
如果要殺死的是僵屍程序,則需要殺掉程序的父程序才有效果,指令為: kill -9 ppid(ppid為父程序ID号,可以通過ps -o ppid PID查找,例如ps -o ppid 32535)。
可以使用top指令檢視僵屍程序(zombie)的總數,使用ps -ef | grep defunct | grep -v grep查找具體僵屍程序的資訊。
伺服器端口的啟動監聽,需要從作業系統本身以及應用程式檢視。
linux作業系統1024以下的端口隻能由root使用者啟動,即需要先運作sudo su –擷取root權限後再啟用服務端口。
應用程式問題,建議通過應用程式啟動日志來排查失敗原因,例如端口沖突(騰訊伺服器系統使用端口不能占用,比如36000),配置問題等。
指令名稱
說明
top
程序監控指令,用來監控系統的整體性能。
可以顯示系統負載,程序,cpu,記憶體,分頁等資訊,常用shift+m和shift+p來按memory和cpu使用對程序進行排序。
vmstat
系統監控指令,重點側重于虛拟記憶體,也可以監控cpu,程序,記憶體分頁以及IO的狀态資訊。
例如,vmstat 3 10,每隔3秒輸出結果,執行10次。
iostat
用于輸出cpu狀态和IO狀态的工具,可以詳細展示系統的IO資訊。
例如iostat -dxmt 10,每10秒以MB的格式輸出IO的詳細資訊。
df
用來檢查系統的磁盤空間占用狀況。
例如:df -m,以MB為機關展現磁盤使用狀況。
lsof
列舉系統中被打開的檔案,由于linux是以檔案系統為基礎,此指令在系統管理中很有幫助。
例如:
lsof -i:36000,顯示使用36000端口的程序
lsof -u root,顯示以root運作的程式
lsof -c php-fpm,顯示php-fpm程序打開的檔案
lsof php.ini,顯示打開php.ini的程序。
ps
程序檢視指令,可以用來顯示程序的詳細資訊。
常用指令參數組合為,ps -ef,ps aux,推薦使用ps -A -o來自定義輸出字段。
ps -A -o pid,stat,uname,%cpu,%mem,rss,args,lstart,etime |sort -k6,6 -rn,按所列字段輸出并以第六個字段進行排序
ps -A -o comm |sort -k1 |uniq -c|sort -k1 -rn|head,列出運作執行個體最多的程序。
其他常用的指令和檔案,free -m,du,uptime,w,/proc/stat,/proc/cpuinfo,/proc/meminfo。
排查步驟如下:
1) 确認crontab是否正常運作。
可以運作指令crontab -e添加如下測試條目*/1 * * * * /bin/date >> /tmp/crontest 2>&1 &,然後觀察/tmp/crontest檔案。
如果有問題,建議使用ps aux|grep cron查找cron的pid,kill -9 PID結束cron程序,然後通過/etc/init.d/cron start重新啟動cron。
2) 确認cron條目中的腳本路徑為絕對路徑。
3) 檢視運作cron的使用者帳号是否正确,同時檢視/etc/cron.deny中是否包含此賬戶。
4) 檢查腳本的執行權限,腳本目錄以及日志的檔案權限。
5) 建議通過背景方式運作腳本,在腳本條目後添加“&”,例如,*/1 * * * * /bin/date >> /tmp/crontest 2>&1 &
Linux核心啟動順序為:
/sbin/init程序啟動,
然後依次執行init初始腳本,
運作級别腳本/etc/rc.d/rc*.d,*号值等于運作模式,可以在/etc/inittab中檢視,最後執行/etc/rc.d/rc.local。
如果需要配置開機任務,可以在/etc/rc.d/rc*.d中的S**rclocal檔案配置,也可以在/etc/rc.d/rc.local中配置。
硬碟隻讀的常見原因如下:
1) 磁盤空間滿
可以通過df -m指令檢視磁盤使用情況,然後删除多餘的檔案釋放磁盤空間(非第三方檔案不建議删除,如果需要請确認);
2) 磁盤inode資源占用完
可以通過df -i指令檢視,确認相關的程序;
3) 硬體故障
如果hosting應用通過上述方式仍無法确認原因,請撥打咨詢熱線4009100100或送出工單協助定位。
系統級别的日志檔案存放路徑為/var/log。
常用的系統日志為/var/log/messages 。
可以首先通過df指令檢視磁盤分區使用情況,比如df -m;
然後通過du指令檢視具體檔案夾的大小,比如du -sh ./*,du -h --max-depth=1|head -10;
使用ls指令列出檔案以及大小,比如ls -lSh;
另外,也可以通過find指令直接檢視特定目錄下的檔案大小,比如find / -type f -size +10M -exec ls -lrt {} ;
可以通過下列指令檢視系統版本:
uname -a,cat /proc/version,cat /etc/issue
伺服器本身沒有對顯示語言有限制,如果是終端軟體的影響中文的顯示,可以嘗試調整【選項】-【會話選項】-【外觀】(secureCRT設定,其他版本軟體請查找相關設定);
如果是純Linux shell出現亂碼,請使用export指令檢視使用者環境變量,檢視LANG,LC_CTYPE等環境變量設定。
可以通過如下設定,使SecureCRT連接配接雲伺服器時,不斷開連接配接:
打開secureCRT選項(Options),選擇會話選項(Session Opetions),點選終端(Terminal),在右側反空閑(Anti-idle)的框中勾選發送協定NO-OP(Send protocol NO-OP),時間設定為每120秒(every 120 seconds)。
有時,登入linux伺服器執行 rm 指令删除檔案後,用 df 指令檢視硬碟空間,發現删除檔案後可用的硬碟空間沒有增加。原因是通過 rm 指令删除檔案的時候,如果正好有其它程序在通路該檔案,通過 df 指令檢視,删除的檔案占用的空間是沒有立即釋放的。
解決方法:
使用root權限執行 lsof |grep deleted ,檢視正在使用被删除檔案的程序的PID,通過指令 kill -9 PID 殺掉對應的程序即可。
本文轉自 頂風走千裡 51CTO部落格,原文連結:http://blog.51cto.com/13505030/2047587