系統調優之四網絡IO子系統


網絡IO子系統
 iptraf 查看當前主機的各個網絡設備的流量情況
  安裝:解壓 ;  ./Setup
  使用:# iptraf -d eth0

 netperf 基於c/s架構的帶寬測試工具,能夠測試出網絡設備的帶寬能去到多少。
  使用: 
   服務端:需要測試帶寬的一端:
   # netserver 
   測試端:用於測試連接服務器能夠達到最大的帶寬
   # netperf -H 10.1.1.22 -l 30
# netperf -H 10.1.1.22 -l 30
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.1.1.22 (10.1.1.22) port 0 AF_INET
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

 87380  16384  16384    30.05      90.92  <--- 百M網卡能達到90是非常不錯。  


實時查看網卡的流量
# sar -n DEV  2 5

 

例子:

# strace -vf -p pid

例子:壓力測試lnmp,判斷服務器在高併發的情況下,到底是最消耗哪種系統資源?有麼有辦法進行調優?

該服務器安裝nginx+mysql+php,跑的應用是phpwind論壇
模擬併發10000-20000

# ulimit -SHn 65535
# ab -c 2000 -n 60000  http://10.1.1.22/read.php?tid=1

查看當前的併發連接數
http://10.1.1.22/status


結論:cpu成爲瓶頸

 php-cgi進程 32*10M ~= 350
 nginx進程 2*20M ~= 40M 


 1、什麼進程最活躍,消耗大量cpu  <---php-cgi
  用於編譯php代碼
   解決:eAccelerator模塊
 2、前端增加squid作爲靜態元素的緩存。
  靜態元素的訪問請求是有原始web服務的nginx來處理,所以增加squid只能起到很小的作用。


 舊的常見的架構:
   clients
     |
   squid <---啓動緩存作用,只能針對文件服務器(附件服務)
     |
   nginx  
    缺點:所有動靜請求都經過squid,squid會可能成爲瓶頸。
     不能緩存動態頁面
     如果強制緩存動態頁面,會導致動頁頁面更新丟失,客戶端看不到最新的頁面。所以這種強制緩存只適合動態頁面更新不頻繁的文章系統。不適論壇。
    或者使用動態頁面靜態化技術(只適合文章系統,不適合論壇)


 新的架構
   clients
     |
   nginx/haproxy  <----調度
     |
  |-------------------|
  nginx_web <-----> squid


 3、針對nginx或者php-cgi進行調優,關閉不必要功能和模塊,關閉不必要其他系統服務
  考慮關閉壓縮模塊
   如果非要壓縮功能,一般也壓縮:
    txt,htm,html,css,js
    不會去壓縮: xml,rar,圖片


  如果服務器併發數太低,cpu還非常充裕:
   允許nginx接受更多併發:
   worker_connections  65535;


  使用php-cgi進程自身的緩存功能
    缺點:與強制打開squid動態頁面緩存一樣。

打開緩存 《--- 減少運算,減少IO
有緩存,就適當加大緩存 
有隊列,加大隊列

 

如果cpu充裕,php-cgi返回503報錯,可以打開更多的php-cgi進程
# vim /usr/local/etc/php-fpm.conf
<value name="max_children">32</value> // 內存超過4G,而且cpu充裕,可以64以上
<value name="rlimit_files">204800</value>
<value name="max_requests">65535</value>

 

備忘:
雙網卡綁定

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章