Load是用來度量服務器工做量的大小,即計算機cpu任務執行隊列的長度,值越大,代表包括正在運行和待運行的進程數越多。
參考資料:http://en.wikipedia.org/wiki/Load_average
php
能夠經過w,top,uptime,procinfo命令,也能夠經過/proc/loadavg文件查看。
html
服務器負載(load/load average)是根據進程隊列的長度來顯示的。
當服務器出現負載高的現象時(建議以15分鐘平均值爲參考),多是因爲CPU資源不足,I/O讀寫瓶頸,內存資源不足等緣由形成,也多是因爲CPU正在進行密集型計算。
建議使用vmstat -x,iostat,top命令判斷負載太高的緣由,而後找到具體佔用大量資源的進程進行優化處理。
java
能夠經過free,top(執行後可經過shitf+m對內存排序),vmstat,procinfo命令,也能夠經過/proc/meminfo文件查看。
node
可使用top -p PID,pmap -x PID,ps aux|grep PID命令,也能夠經過/proc/$process_id(進程的PID)/status文件查看,例如/proc/7159/status文件。
linux
請開發者首先確認服務器A和B是屬於同一個應用,不一樣應用沒法交叉登陸。
1. 當服務器A沒法登陸服務器B時,可使用ping IP和telnet IP 36000命令確認服務器B是否死機,ssh服務是否正常。
若是有異常,登陸open.qq.com管理中心重啓服務器(詳細操做說明見:CVM_V2申請和管理#3.2 服務器重啓)。
2. 若是能夠經過客戶端直接訪問服務器B,可是不能從服務器A登陸服務器B,請經過企業QQ聯繫運維支持協助定位。
ios
可使用netstat -tunlp,netstat -antup,lsof -i:PORT命令查看。
web
可使用ps auxww|grep PID,ps -ef,lsof -p PID,top -p PID命令查看。
shell
可使用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查找具體殭屍進程的信息。
windows
同一應用下的不一樣機器,能夠經過以下命令實現文件傳輸:
scp -P port(使用36000端口) /home/user/localfilename(本地文件路徑) user(使用appid)@serverip:/home/user/removefilename(目標文件路徑)
rsync -e 'ssh -p port(使用36000端口) -q' /home/user/localfilename (本地文件路徑) user(使用appid)@serverip:/home/user/removefilename(目標文件路徑)
服務器端口的啓動監聽,須要從操做系統自己以及應用程序查看。
linux操做系統1024如下的端口只能由root用戶啓動,即須要先運行sudo su –獲取root權限後再啓用服務端口。
應用程序問題,建議經過應用程序啓動日誌來排查失敗緣由,例如端口衝突(騰訊服務器系統使用端口不能佔用,好比36000),配置問題等。
命令名稱 | 說明 |
---|---|
top | 進程監控命令,用來監控系統的總體性能。 能夠顯示系統負載,進程,cpu,內存,分頁等信息,經常使用shift+m和shift+p來按memory和cpu使用對進程進行排序。 |
vmstat | 系統監控命令,重點側重於虛擬內存,也能夠監控cpu,進程,內存分頁以及IO的狀態信息。 例如,vmstat 3 10,每隔3秒輸出結果,執行10次。 |
iostatc | 用於輸出cpu狀態和IO狀態的工具,能夠詳細展現系統的IO信息。 例如iostat -dxmt 10,每10秒以MB的格式輸出IO的詳細信息。 |
df | 用來檢查系統的磁盤空間佔用情況。 例如:df -m,以MB爲單位展示磁盤使用情況。 |
lsof | 列舉系統中被打開的文件,因爲linux是以文件系統爲基礎,此命令在系統管理中頗有幫助。 例如: |
ps | 進程查看命令,能夠用來顯示進程的詳細信息。 經常使用命令參數組合爲,ps -ef,ps aux,推薦使用ps -A -o來自定義輸出字段。 |
其餘經常使用的命令和文件,free -m,du,uptime,w,/proc/stat,/proc/cpuinfo,/proc/meminfo。
參考資料:http://en.wikipedia.org/wiki/Template:Unix_commands,http://www.linuxmanpages.com/
排查步驟以下:
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命令查看磁盤使用狀況,而後刪除多餘的文件釋放磁盤空間(非第三方文件不建議刪除,若是須要請聯繫企業QQ確認);
2. 磁盤inode資源佔用完
能夠經過df -i命令查看,確認相關的進程;
3. 硬件故障。
若是hosting應用經過上述方式仍沒法確認緣由,請經過企業QQ聯繫運維支持協助定位。
系統級別的日誌文件存放路徑爲/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
方式1:
登陸open.qq.com管理中心重啓服務器(詳細操做說明見:CVM_V2申請和管理#3.2 服務器重啓)。
方式2:若是方式1不生效,能夠嘗試在服務器上以root運行reboot命令進行重啓。
服務器自己沒有對顯示語言有限制,若是是終端軟件的影響中文的顯示
能夠嘗試調整 選項-會話選項-外觀(secureCRT設置,其餘版本軟件請查找相關設置);
若是是純Linux shell出現亂碼,請使用export命令查看用戶環境變量,查看LANG,LC_CTYPE等環境變量設置。
能夠經過以下設置,使SecureCRT鏈接CVM時,不斷開鏈接:
打開secureCRT選項(Options),選擇會話選項(Session Opetions),點擊終端(Terminal),在右側反空閒(Anti-idle)的框中勾選發送協議NO-OP(Send protocol NO-OP),時間設置爲每120秒(every 120 seconds)。
詳見:root權限說明。
現象:
登陸linux服務器,執行 rm 命令刪除文件,用 df 命令查看硬盤空間,發現刪除文件後,可用的硬盤空間沒有增長。
緣由:
經過 rm 命令刪除文件的時候,若是正好有其它進程在訪問該文件,經過 df 命令查看,刪除的文件佔用的空間是沒有當即釋放的。
解決方法:
使用root權限執行 lsof |grep deleted ,查看正在使用被刪除文件的進程的PID,經過命令 kill -9 PID 殺掉對應的進程便可。
首先開發者需確認訪問慢的緣由,包括用戶緣由,網絡緣由,服務端緣由。
1. 用戶緣由建議從如下方面排查:
用戶電腦性能,電腦病毒,DNS緩存和設置,上網代理,防火牆設置,瀏覽器版本和插件等,能夠經過換電腦測試。
2.網絡緣由建議從如下方面排查:
肯定用戶的IP以及網絡運營商,域名解析是否正確,是否存在跨網,局域網額外限制,到其餘公網服務是否正常,到相關服務器或網絡中間路由節點的網絡延遲,有無丟包,小運營商網絡不穩定等。
建議經過異地正常網絡使用相同賬號測試。
3. 服務端問題建議從如下方面排查:
平臺問題,如CDN異常,請求轉發異常等;服務端問題,如服務器性能,進程情況,程序異常等。
排查時,請配合使用如tcpdump,tracert等各類命令,以及httpwatch,wireshark等抓包工具。
如經過上述技術手段還沒法解決,請提供以上排查信息和數據,經過企業QQ聯繫運維支持協助定位。
命令名稱 | 說明 |
---|---|
Ipconfig/ifconfig | 顯示計算機TCP/IP的詳細配置,包括DNS信息,例如ipconfig /all,ipconfig /displaydns。 |
Ping | 包發送命令,能夠模擬診斷延遲,丟包,測試網絡情況,例如linux:ping 10.1.1.1 -c 10 -s 800,ping 10.1.1.1 -i 0.5,windows:ping qq.com -t,ping 10.1.1.1 -n 8 -l 800。 |
Tracert/traceroute | 跟蹤路由,顯示數據包到達目的的路徑及各節點的時間,能夠用來發現運營商節點問題和跨網問題等,如tracert qq.com。 |
Telnet | 遠程登陸服務命令,主要用於測試端口狀態,例如telnet 10.1.1.1 8001。 |
Nslookup | 域名查詢工具,主要用來查看域名解析是否正確。 |
Netstat | wc,netstat -an等。 |
工具名稱 | 說明 |
---|---|
Tcpdump | 適用於linux系統。 網絡數據採集分析工具,能夠對網絡數據包進行截獲和分析。 |
Httpwatch | 適用於windows系統。 強大的網頁數據分析工具,集成在IE瀏覽器,也可支持firefox,能夠用來診斷前臺接口調試,CDN下載資源慢和頁面響應慢等問題。 |
Fiddler | 適用於windows系統。 獨立的網絡抓包工具,可監聽全部電腦和互聯網的http通信,能夠用來調試和診斷web服務和本地http的交互等問題。 |
Wireshark | 適用於windows和linux系統。 網絡封包分析軟件,能夠實時分析全部支持協議的通信數據 |
請經過如下網站查詢:
Ip.qq.com, ip138.com
方法一:
WinXP:
右鍵網上鄰居—>屬性(R)—>右鍵本地連接—>屬性(P),雙擊Internet協議版本4(TCP/IPV4),修改本地DNS設定。
Win7:
開始菜單—>控制面板—>網絡和共享中心—>本地鏈接—>屬性(P),雙擊Internet協議版本4(TCP/IPV4),修改本地DNS設定。
方法二:
開始—>運行—>輸入CDM進入到命令模式,輸入
命令一:netsh interface ip set dns "網卡名" static 主DNS,
命令二:netsh interface ip set dns "網卡名" static 輔DNS編號(例如:主DNS設定:netsh interface ip set dns "本地鏈接" static 8.8.8.8,輔DNS設定:netsh interface ip set dns "本地鏈接" static 8.8.8.8 2)。
方法一:
開始菜單—>管理工具—>服務,重啓DNS Client和DHCP client兩項服務。
方法二:
開始菜單—>運行—>輸入CDM進入命令模式,輸入ipconfig/flushdns,回車執行,提示成功便可。
服務端:
確認是否有監聽對應的端口,是否有作訪問限制。
客戶端:
測試鏈接方式是否正常,例如TELNET只能測試TCP端口,UDP端口可使用NETCAT等工具進行測試.能夠經過wireshark和tcpdump等工具查看具體的數據包走向,明肯定位問題。
其餘:
騰訊機房禁止不一樣應用的機器相互訪問,若是同一應用內端口沒法正常訪問,請經過企業QQ聯繫運維支持查詢防火牆設置。
請確認網絡是否可用,域名解析是否正確,服務端是否禁止ICMP包,使用tracert/traceroute協助肯定網絡故障。
如經過上述技術手段還沒法解決,請提供以上排查信息和數據,請經過企業QQ聯繫運維支持協助定位。
Telnet不通,指的是telnet以後沒有任何返回,若是直接返回信息,則表示telnet是通的,可是請求被直接拒絕。
故障排查步驟:
在telnet源上,經過ping測試網絡是否正常;
在目標機器上,確認服務器是否設置了禁止telnet(默認沒有設置),是否監聽了正確的IP和端口,能夠經過telnet 127.0.0.1測試本地telnet服務;
對於hosting應用,若是經過以上技術手段還沒法解決問題,請提供相應信息和數據,請經過企業QQ聯繫運維支持排查騰訊防火牆設置。
tracert不通,指的是從某一節點開始,所有是*,而且沒法到達目的,若是隻是中間某一個節點出現*,則只能說明該節點禁止被tracert。
故障排查步驟:
從tracert的第一個節點開始,到最後一個可訪問節點,查詢各節點IP的所屬運營商,能夠判斷網絡訪問路徑以及運營商,而後定位是運營商問題,仍是目標服務的問題。
注意,小運營商跨網問題,須要自助向運營商反饋。
Udp包的發送和監聽可使用以下方法:
發送udp包,使用netcat命令,例如netcat -v -u 10.1.1.1 8001,同時使用tcpdump或者netcat監聽udp請求。
能夠結合如下現象初步判斷是否受到DDOS攻擊:
機器入流量出現陡增,同時出流量急劇降低;
服務器出現大量SYN,TIME_WAIT等異常鏈接( netstat –a |awk '{print $6}' |sort|uniq -c|sort -gk 1);
某些IP訪問頻率太高,佔用大量資源(netstat -tun|awk '{print $5}'|uniq -c|sort -r),致使服務不正常等。
注:騰訊已經對常見的攻擊進行了監控和防範,開發者也可結合自身邏輯在服務器端限制特定IP訪問。
爲了防範DDOS網絡攻擊,建議開發者進行以下開發:
1. 建議在Server端引入超時機制,對指定時間內未發送請求或是未發完請求的客戶端主動斷開,規避空鏈接或是慢速請求攻擊;
2. 建議對客戶端請求頻率作統計,對頻繁超過配置的源IP,臨時封禁一段時間,或是使用驗證碼進行限制,防止刷請求;
3. 建議安全保護邏輯前置在全部業務邏輯以前,避免惡意請求消耗過多服務器性能。
應用爲了兼顧電信、聯通、移動的用戶,通常都須要實現三網接入,讓三個運營商的用戶進入都不須要跨網,保證應用質量。
騰訊開放平臺提供了TGW域名接入方案(詳見:域名接入),開發者只須要經過域名綁定,讓一個域名同時綁定在電信、聯通、移動的代理機器上,便可讓電信的用戶經過電信代理訪問應用,聯通的用戶經過聯通的代理進入,移動的用戶經過移動的代理進入,知足了應用對三網接入的需求。
單個用戶網絡問題,建議開發商協助用戶檢查其電腦設置,包括DNS,上網代理,防火牆,局域網設置,是否跨網等;
若是是批量用戶出現網絡問題,能夠收集共性信息,好比地域,運營商,訪問方式等,而後經過企業QQ聯繫運維支持進行問題定位和解決。
當http返回碼出現40x的時候,表示用戶提交的請求被服務器接受,可是被認爲是錯誤的請求,包括:
請求語法錯誤,請求文件不存在,服務器拒絕請求,客戶端請求發送超時等。
開發者須要結合客戶端請求和服務端設置來詳細定位。詳細返回信息信息請參考:
http://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81
當http返回碼出現50x的時候,表示服務器在處理正確請求時,出現了內部錯誤,屬於服務端問題。
建議開發者在服務代碼和邏輯中進行定位。詳細返回碼信息請參考:
http://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81
以上信息是否解決您的問題?
是否
1、 經常使用命令
pstree查看進程樹。能夠很清楚的看到進程之間的關係;
Top:查看各進程的佔用資源的狀況;
du -h --max-depth=1 顯示當前目錄中全部子目錄的大小;
w 查看服務器的load狀況
bigip 在預發佈機器上使用命令「bigip sh ${ip/機器名} {username}」 能夠檢查機器是在F5上狀態是disable仍是enable.
gm.sh "curl http://localhost/monitor/ok.html" 在預發佈機器上檢查各個服務器的健康檢查頁面。
gm.sh "ps amx | grep httpd | wc -l" 在預發佈機器上檢查各個服務器的http連接數
2、 proc下的僞文件。 如:meminfo 檢查內存信息,cpuinfo 內核信息。
cat /proc/cpuinfo 檢查cpu的信息。咱們的一些程序根據cpu內核的數量作過優化(如:memcached,假的多核可能會引發一些bug。)
如上圖 baike-web1 是4核的,baike-web2是雙核超線程的。
擁有相同 physical id 的全部邏輯處理器共享同一個物理插座。每一個 physical id 表明一個惟一的物理封裝。Siblings 表示位於這一物理封裝上的邏輯處理器的數量,若是不存在表示1。每一個 core id 均表明一個惟一的處理器內核。全部帶有相core id 的邏輯處理器均位於同一個處理器內核上。若是有一個以上邏輯處理器擁有相同的 core id 和 physical id,則說明系統支持超線程(HT)技術。若是有兩個或兩個以上的邏輯處理器擁有相同的 physical id,可是 core id不一樣,則說明這是一個多內核處理器。
三、 網絡鏈接
netstat: -t: 顯示TCP連接信息;-u: 顯示UDP連接信息;-n直接顯示ip,不作名稱轉換;-p: 顯示相應的進程PID以及名稱(要root權限)
若是要查看關於sockets更詳細佔用信息等,可使用lsof.
a) netstat -anp|grep java|grep 3306|wc –l檢查Java進程中數據庫的連接數量
b) netstat -na|grep ESTABLISHED|awk '{print $4}'|grep ":80$"|wc –l 檢查已經創建的80端口的鏈接數
c) netstat -na |grep 「:2088」 檢查搜索引擎的鏈接數
四、 dump java進程堆棧
a) kill -3 ${java進程Id},能夠在java進程的日誌中看到輸出(jboss 記錄在jboss_stdout.log中)
b) jstack $pid. 直接dump當前進程的的堆棧信息。
對於thread dump信息,主要關注的是線程的狀態和其執行堆棧,特別是load很高的時候,經過thread dump能夠看到線程到底在幹嗎,從中找出問題。 線程的狀態通常爲三類: runable:當前能夠運行的線程, Waiting on monitor:線程主動wait, Waiting for monitor entry:線程等鎖. Cpu很忙則關注runnable的線程,Cpu閒則關注waiting for monitor entry的線程。
五、 java內存溢出
1、 能夠先用 jstat -gcutil ${pid} {interval} 看看java內存回收的動態信息。 interval– 表示間隔打印的時間,單位爲毫秒
圖中參數含義以下:
S0 — Heap上的 Survivor space 0區已使用空間的百分比
S1 — Heap上的 Survivor space 1 區已使用空間的百分比
E — Heap上的 Eden space 區已使用空間的百分比
O — Heap上的 Old space 區已使用空間的百分比
P — Perm space 區已使用空間的百分比
YGC — 從應用程序啓動到採樣時發生 Young GC 的次數
YGCT– 從應用程序啓動到採樣時 Young GC 所用的時間(單位秒)
FGC — 從應用程序啓動到採樣時發生 Full GC 的次數
FGCT– 從應用程序啓動到採樣時 Full GC 所用的時間(單位秒)
2. 使用jmap 來dump java內存中所有對象,分析死鎖的位置。
jmap -histo $pid 快速查看當前內存中各個Java對象的大小和數量
jmap -dump:live,format=b,file=heap.dmp $pid 能夠將jvm堆棧中的信息所有複製到文件head.dmp中,注意這個heap.dmp文件會比較大, 線上jboss分配的內存通常爲2g,當內存溢出時dump出來的head.dmp文件也是2g,因此dump的時間也比較長,通常會有半個小時.
日誌文件生成後運行命令「jhat -J-mx768m -port 7001 heap.dmp」分析堆棧日誌(注意不要在線上服務器上分析)。 訪問 http://localhost:7001能夠查看分析報告。
或者可使用eclipse 的mat插件分析,它能夠以圖形形式分析出內存中的java對象的分佈: (插件地址http://download.eclipse.org/mat/1.0/update-site/).導入後能夠生成一個圖形報表
六、 7001端口報警。
通常狀況是jboss掛掉了。由於java進程已經退出。1首先須要查看:jboss_stdout.log,它會告訴你jboss crash的一些信息,它還會告訴你在jboss crash有一個詳細的出錯報告, 位置在/web-deploy/bin/hs_err_pid.log
七、 cookie日誌分析
cat cookie_log|awk '{print $1} '|grep -v "172.16"|grep -v "127.0.0.1"|sort|uniq -c|sort -n |tail -n 10 提取訪問量前10位的ip.
cat cookie_log |grep '09/Dec/2010:18:01'|wc –l 檢查18:01這一分鐘的訪問總量。
cat cookie_log|grep 'HTTP/.../" [4|5]'|more 查看響應出錯的請求。
cat cookie_log |grep -E 'Googlebot|Baiduspider'|wc –l統計google和baike爬蟲的訪問量。