apache ab測試與centos系統優化

AB測試

# 進入AB工具目錄
cd /usr/local/httpd/bin

# ab命令 -c 併發數  -n 請求次數  測試網址(必須帶文件)
./ab -c 1000 -n 50000  http://172.20.17.211/index.html

# 結果分析
Percentage of the requests served within a certain time (ms)
  50%     50
  66%     51
  75%     53
  80%     55    // 80%頁面  消耗時間在55毫秒
  90%    663
  95%   1051
  98%   3001
  99%   3200
 100%  19926 (longest request)


# 再來測試一個大的
[root@localhost bin]# ./ab -c 2000 -n 80000  http://172.20.17.211/index.html     
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 172.20.17.211 (be patient)
socket: Too many open files (24)

# 報錯了,提示打開的文件太多了,來解決
# 查看默認服務器准許最高打開的描述符,通常1024
ulimit -n

# 臨時修改最高描述符個數
ulimit -n 20000

# 永久神效
vim /etc/rc.local
# 最後一行加入
echo 100000 > /proc/sys/fs/file-max

# 查看系統錯誤信息
dmesg|tail

# 若是提示下面信息,表示洪水攻擊,或者說服務器處理不過來了
possible syn flooding on port 80 . sending cookies.

Apache優化

# 編輯Apache鏈接數配置
vim /etc/httpd/conf/httpd.conf

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>
修改
ServerLimit 1500 
MaxClients 1500

Nginx 優化

clipboard.png

clipboard.png

Linux 系統優化

# sock 優化
more /proc/sys/net/core/somaxconn
echo 50000 > /proc/sys/net/core/somaxconn

# 加快TCP回收
cat /proc/sys/net/ipv4/tcp_tw_recycle # 默認值0:不自動回收
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle 

# 空的TCP回收利用
cat /proc/sys/net/ipv4/tcp_tw_reuse
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse

# 不作洪水抵禦
cat /proc/sys/net/ipv4/tcp_syncookies
echo 0 > /proc/sys/net/ipv4/tcp_syncookies

# 編輯 vim /etc/sysctl.conf 文件永久優化
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce=2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 0            # SYN等待隊列溢出時,啓用cookies來處理 0關閉1啓用
net.ipv4.tcp_max_syn_backlog = 10240   # 表示未收到客戶端確認信息的鏈接(SYN消息)最大長度
net.ipv4.tcp_synack_retries = 2        # 重試次數
net.ipv4.conf.lo.arp_announce=2
net.ipv4.tcp_tw_reuse = 1              # 空的TCP回收利用 0關閉 1啓用
net.ipv4.tcp_tw_recycle = 1            # 加快TCP回收 0關閉 1啓用
net.core.somaxconn = 262144            # 限制監聽(LISTEN)隊列最大數據包的數量

# 當即生效
sysctl -p /etc/sysctl.conf

優化腳本

vim /data/sh/tcpopt.sh

nginx 添加統計模塊,便於觀察nginx狀態

./configure --prefix=/usr/local/nginx/ --add-module=/app/ngx_http_consistent_hash-master --with-http_stub_status_module
make && make install

# 配置nginx
location /status {
    stub_status On;  # 開啓統計模塊
    access_log Off;  # 關閉日誌記錄
    allow 192.168.1.168;    # 准許訪問的IP
    deny all;        # 其餘都不許許訪問
}

clipboard.png

相關文章
相關標籤/搜索