源自《linux高效能伺服器程式設計》- 遊雙
高併發計算伺服器數量
每秒查詢率qps:對乙個特定的查詢伺服器在規定時間內所處理流量多少的衡量標準,即每秒請求數,即最大談吐能力。
併發數:併發數和qps是不同的概念,一般說qps會說多少併發使用者下qps,當qps相同時,併發使用者數越大,**併發處理能力越好。當併發使用者數過大時,會造成程序(執行緒)頻繁切換,反正真正用於處理請求的時間變少,每秒能夠處理的請求數反而變少,同時使用者的請求等待時間也會變大。 找到最佳執行緒數能夠讓web系統更穩定,效率更高。
ps -ef | grep 命令詳解
ps 命令的作用是顯示程序資訊的。
如ps -ef | grep server
顯示server程序的資訊。
mpstat(multi-processer statistics),它能實時檢測多處理器系統上每個cpu的使用情況。
%usr:除了nice值為負的程序,系統上其他程序執行在使用者空間的時間佔cpu總執行時間的比例。
%sys:系統上所有程序執行在核心空間的時間佔cpu總執行時間的比例,但不包括硬體和軟體中斷消耗的cpu時間。
%idle:系統空閒的時間佔cpu總執行時間的比例。
以上三個字段基本上反映了**中業務邏輯**和系統呼叫所佔的比例,以及系統還能承受多大的負載。
(nice值是類unix作業系統中表示靜態優先順序的數值。每個程序都有自己的靜態優先順序,優先順序高的程序得以優先執行。
nice值的範圍是-20~+19,擁有nice值越大的程序的實際優先順序越小(即nice值為+19的程序優先順序最小,為-20的程序優先順序最大),預設的nice值是0。由於nice值是靜態優先順序,所以一經設定,就不會再被核心修改,直到被重新設定。nice值只起干預cpu時間分配的作用,實際中的細節,由動態優先順序決定。
「nice值」這個名稱來自英文單詞nice,意思為友好。nice值越高,這個程序越「友好」,就會讓給其他程序越多的時間。)
iostat主要用於監控系統裝置的io負載情況,iostat首次執行時顯示自系統啟動開始的各項統計資訊,之後執行iostat將顯示自上次執行該命令以後的統計資訊。
linux io實時監控iostat命令詳解
ifstat(inte***ce statistics)是乙個簡單的網路流量檢測工具。
vmstat(virtual memory statistics)能實時輸出系統的各種資源的使用情況,比如程序資訊、記憶體使用、cpu使用率以及i/o使用情況。
netstat是乙個功能很強大的網路資訊統計工具。
如netstat -t | grep 127.0.0.1:9006
檢視指定ip:port
的tcp連線狀態。
strace是測試伺服器效能的重要工具。它跟蹤程式執行過程中執行的系統呼叫和接收到的訊號,並將系統呼叫名、引數、返回值及訊號名輸出到標準輸出或者指定的檔案。
nc(netcat)主要被用來快速構建網路連線。我們可以讓它以伺服器的方式執行,監聽某個埠並接收客戶連線,因此它可以用來除錯客戶端程式。我們也可以使之以客戶端方式執行,向服務端發起連線並收發資料,因此它可以用來除錯伺服器程式,此時它有點像telnet程式。
如nc -c 127.0.0.1 9006
連線伺服器。
lsof(list open file)是乙個列出當前系統開啟的檔案描述符的工具。
tcpdump是一款經典的網路抓包工具。
效能測試的指標
【原始碼剖析】webbench —— 簡潔而優美的壓力測試工具
linux下使用的伺服器壓力測試工具,利用fork建立多個子程序,每個子程序在測試時間內不斷與伺服器建立tcp連線,傳送請求報文,然後由父程序統計(通過管道):tcp連線成功次數,tcp連線失敗次數,從伺服器接收的資料量。
執行./webbench -c 10500 -t 5 -2
,可知伺服器可以承受1w+的併發連線,每秒處理請求數約4.5w(224613/5),且沒有處理失敗的請求。(webbench的http請求僅僅只是訪問web的首頁,即,並沒有測試登入等頁面)
增大併發連線數./webbench -c 11000 -t 5 -2
,發現fork第10808 個子程序時失敗。
再次執行,發現最大只能 fork 9099 個子程序了。這是因為webbench異常退出後並沒有結束fork的子程序,因此需要killall webbench
結束fork的所有子程序。
ulimit用於shell啟動程序所占用的資源,可以用來設定系統的限制。在root下進行open files
和max user processes
設定(普通使用者下同一時間可以開啟的檔案描述符最大只能設定4096,最大的使用者程序數只能設定63698。
linux下程序的程序最大數、最大執行緒數、程序開啟的檔案數和ulimit命令修改硬體資源限制
目前的問題,修改了open files
和max user processes
之後fork第10808 個子程序時失敗,電腦效能的限制?預設的最大的使用者程序數63698>>10808,為什麼只能 fork 10808 個子程序?
試著改小max user processes=15000
,即ulimit -u 15000
,再次執行,fork第10808 個子程序時失敗。猜測應該是系統效能的限制或者一些設定的問題。
優化伺服器設定 高效能MySQL
mysql有大量可以修改的引數 但不應該隨便去修改。通常只需要把基本的項配置正確 大部分情況下只有很少一些引數是真正重要的 應該將更多的時間花在schema的優化 索引,以及查詢設計上。在正確地配置了mysql的基本配置項之後,再花力氣去修改其它配置項的收益通常就比較小了。1.建立mysql配置檔案...
高效能伺服器設計
原文 http blog.chinaunix.net u 5251 showart 236329.html 先後檢視了 haproxy l7sw 和lighttpd 的相關原始碼,無一例外,他們一致認為多路復用是效能最好的伺服器架構 事實也確實應該如此,程序的出現一方面就是為了儲存任務的執行上下文從...
高效能伺服器設計
先後檢視了haproxy l7sw 和lighttpd 的相關原始碼,無一例外,他們一致認為多路復用是效能最好的伺服器架構。事實也確實應該如此,程序的出現一方面就是為了儲存任務的執行上下文從而簡化應用程式設計,如果程式的邏輯結構不是很複雜,那麼用整個程序控制塊來儲存執行上下文未免有些大材小用,加上程...