1、查看CPU的性能負(fù)載
a) uptime用于觀察服務(wù)器整體負(fù)載,系統(tǒng)負(fù)載指運(yùn)行隊(duì)列(1分鐘、5分鐘、15分鐘前)的平均長度, 正常情況需要小于cpu個(gè)數(shù)。
b) vmstat是Virtual Meomory Statistics(虛擬內(nèi)存統(tǒng)計(jì))的縮寫,可對(duì)操作系統(tǒng)的虛擬內(nèi)存、進(jìn)程、CPU活動(dòng)進(jìn)行監(jiān)控。他是對(duì)系統(tǒng)的整體情況進(jìn)行統(tǒng)計(jì),通常使用vmstat 5 5(表示每隔5秒生成一次數(shù)據(jù),生成五次)命令測(cè)試。將得到一個(gè)數(shù)據(jù)匯總他能夠反映真正的系統(tǒng)情況。
c)top命令是最流行Unix/Linux的性能工具之一。系統(tǒng)管理員可用運(yùn)行top命令監(jiān)視進(jìn)程和Linux整體性能。
2、查看內(nèi)存的性能負(fù)載
a) free Linux下的free命令,可以用于查看當(dāng)前系統(tǒng)內(nèi)存的使用情況,它顯示系統(tǒng)中剩余及已用的物理內(nèi)存和交換內(nèi)存,以及共享內(nèi)存和被核心使用的緩沖區(qū)。
3、查看網(wǎng)絡(luò)的性能負(fù)載
b) Netstat是控制臺(tái)命令,是一個(gè)監(jiān)控TCP/IP網(wǎng)絡(luò)的非常有用的工具,它可以顯示路由表、實(shí)際的網(wǎng)絡(luò)連接以及每一個(gè)網(wǎng)絡(luò)接口設(shè)備的狀態(tài)信息。Netstat用于顯示與IP、TCP、UDP和ICMP協(xié)議相關(guān)的統(tǒng)計(jì)數(shù)據(jù),一般用于檢驗(yàn)本機(jī)各端口的網(wǎng)絡(luò)連接情況。
c) sar(System Activity Reporter系統(tǒng)活動(dòng)情況報(bào)告)是目前 Linux 上最為全面的系統(tǒng)性能分析工具之一,可以從多方面對(duì)系統(tǒng)的活動(dòng)進(jìn)行報(bào)告,包括:文件的讀寫情況、系統(tǒng)調(diào)用的使用情況、磁盤I/O、CPU效率、內(nèi)存使用狀況、進(jìn)程活動(dòng)及IPC有關(guān)的活動(dòng)等。本文主要以CentOS 6.3 x64系統(tǒng)為例,介紹sar命令。
4、查看磁盤的性能負(fù)載
a) iostat Linux下的iostat命令,可用于報(bào)告中央處理器(CPU)統(tǒng)計(jì)信息和整個(gè)系統(tǒng)、適配器、tty 設(shè)備、磁盤和 CD-ROM 的輸入/輸出統(tǒng)計(jì)信息。
5 、nginx配置和排查指引
a)nginx問題的排查方法
當(dāng)出現(xiàn)直接超時(shí)、處理返回慢時(shí)的報(bào)警時(shí)linux常用命令,nigix側(cè)的故障排查參考方法有如下:
1、檢查請(qǐng)求日志情況, tail -f logs/access.log ,看upstream_status字段。
200:表示正常;
17:proxy_intercept_errors:設(shè)置nginx服務(wù)器返回客戶端的錯(cuò)誤狀態(tài),當(dāng)后端服務(wù)器返回大于等于400的錯(cuò)誤碼的是,如果本功能是打開的,則nginx服務(wù)器返回自定義的錯(cuò)誤頁面(使用error page定義的),如果沒有開啟就將后端服務(wù)器返回的http狀態(tài)直接返回給客戶端,默認(rèn)為關(guān)閉:。只應(yīng)該在onmessage消息處理函數(shù)內(nèi)部調(diào)用default調(diào)用缺省的窗口過程,它提供了對(duì)應(yīng)用程序沒有處理的任何窗口消息的缺省處理pretranslatemessage在消息被發(fā)送到windows函數(shù)translatemessage和dispatchmessage之前,cwinapp使用這個(gè)函數(shù)來過濾窗口消息sendmessage向cwnd對(duì)象發(fā)送一個(gè)消息,直到這條消息被處理之后才返回postmessage將一條消息放入應(yīng)用程序的消息隊(duì)列,然后不等窗口處理這條消息直接返回sendnotifymessage將一條消息發(fā)送到窗口并盡快返回,返回的速度取決于該窗口是否是由調(diào)用線程所創(chuàng)建。我找到的幾個(gè)原因,基本就是后端sql運(yùn)行的比較多,單次訪問看不出來,但是人比較多的時(shí)候就比較慢了,人少的時(shí)候20-200毫秒,人多的時(shí)候,200-6000毫秒,優(yōu)化之后基本保持在幾十毫秒,優(yōu)化策略就是減少不必要的sql,加上緩存,基本解決了卡頓的問題,順便把這次用的一系列命令記錄下來,當(dāng)個(gè)總結(jié)吧。