kvm虛擬機 nginx性能測試

暫時中止對mongodb的性能測試 由於前端作負載均衡的nginx性能提高不上去 因爲經費 還有目前測試條件的限制 咱們作的性能測試都是在KVM虛擬機裏搭建的環境 nginx1.2.6 測試工具就是apache benchmark(ab) 操做系統是centos5.4(好老啊) html


測試準備:  前端

主要是內核參數調優 常見的dmesg信息就是‘TCP: time wait bucket table overflow’  nginx

若是開啓了iptables那麼可能會遇到'kernel: ip_conntrack: table full, dropping packet.' mongodb

net.ipv4.tcp_max_tw_buckets = 65535
net.ipv4.tcp_sack = 1 
net.ipv4.tcp_window_scaling = 1 
net.ipv4.tcp_rmem = 4096 87380 4194304  
net.ipv4.tcp_wmem = 4096 16384 4194304  
net.core.wmem_default = 8388608 
net.core.rmem_default = 8388608 
net.core.rmem_max = 16777216 
net.core.wmem_max = 16777216 
net.core.netdev_max_backlog = 262144 
net.core.somaxconn = 262144 
net.ipv4.tcp_max_orphans = 3276800 
net.ipv4.tcp_max_syn_backlog = 262144 
net.ipv4.tcp_timestamps = 0 
net.ipv4.tcp_synack_retries = 1 
net.ipv4.tcp_syn_retries = 1 
net.ipv4.tcp_tw_recycle = 1 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_mem = 94500000 915000000 927000000  
net.ipv4.tcp_fin_timeout = 1 
net.ipv4.tcp_keepalive_time = 30 
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 90
net.ipv4.ip_local_port_range = 1024 65000 
fs.file-max = 102400


測試頁面就是簡單的html 內容是hello world   虛擬機配置 2cpu 2GB memory

虛擬機內部搭建單個nginx實例 work process的值咱們開始設置的很高 好比2個cpu 咱們給它設定的值爲8或者16 在跑ab測試的時候 運行vmstat 監控狀態 會發現等待運行的進程數>5 當這個數值上升時  能夠明顯感受到ab的速度在下滑 可是調整到和cpu個數一致 等待運行的進程數有明顯的下降 apache

ok 在虛擬機內部壓nginx rps能夠達到1w左右 感受還算比較正常 相比物理上的測試結果 我以爲這個rps仍是比較滿意的 可是經過另一臺物理機 通過網絡來壓它 峯值只能到2k rps左右 咱們的網絡鏈接是100M ab中的平均傳輸率在250K左右 用了一個工具dstat 來查看網絡 磁盤io 網絡傳輸在1M左右 顯然沒有達到峯值 哎 確定是網絡的問題了 查了kvm的相關資料 而後對比本身虛擬機選擇的NIC omg 咱們使用的是默認的NIC 推薦使用virtio 用virtio幾乎能夠達到物理NIC的效率 調整後測試 能夠達到9k-1w rps 在GBit網絡模式下 虛擬機的網絡配置也推薦使用virtio  centos

相關文章
相關標籤/搜索