[系統調優] Nginx壓測QPS 2w+ 的調優實驗

前言

系統:兩臺Centos7,一臺作Nginx運行機器,一臺是壓測程序運行機器
CPU核數:4核
工具準備:ab壓測工具

yum install httpd-tools -y

無法安裝的同學,添加yum源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirror-sng.oa.com/repo/Centos-7.repo
cd /etc/yum.repos.d
sed -i 's/\$releasever/7/g' CentOS-Base.repo

注意,壓測壓不上去,檢查ab程序和nginx是不是同一臺機器,同一機器影響壓測結果,因爲ab和nginx都在搶佔cpu

實驗

1. Nginx的配置調優:Nginx進程數

編輯nginx配置文件nginx.conf
客戶端最大連接數 = worker_processes * worker_connections

worker_processes  4;
worker_connections  20480;

2.Linux系統參數設置:文件句柄設置

如果單個進程打開的文件句柄數量超過了系統定義的值,就會提到“too many files open”的錯誤提示。如何知道當前進程打開了多少個文件句柄呢?下面一段小腳本可以幫你查看:
lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more

a. 臨時修改linux的最大文件句柄數限制的方法:
ulimit -n 500000
在當前session有效,用戶退出或者系統重啓後恢復默認值

b. 用戶級修改

sudo vim /etc/security/limits.conf

* soft nofile 500000 #限制單個進程最大文件句柄數(到達此限制時系統報警) 

* hard nofile 500000 #限制單個進程最大文件句柄數(到達此限制時系統報錯)

星號表示任何用戶,soft/hard表示軟限制、硬限制。修改/etc/pam.d/login文件指定使用PAM
c. 系統級別修改
echo "500000" > /proc/sys/fs/file-max

d. 修改profile文件:在profile文件中添加:ulimit -n 500000,只對當前用戶有效

3. Linux的內核參數調優:內核網絡tcp包複用

# 設置端口複用
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
# 關閉防止syncflood
echo 0 > /proc/sys/net/ipv4/tcp_syncookies
# 增大服務端全連接隊列大小
echo 50000 > /proc/sys/net/core/somaxconn

結果

ab -n 200000 -c 20000 ‘http://127.0.0.1/index.html
在這裏插入圖片描述

ab壓測與nginx在同臺服務器,會造成CPU競爭的處理方法

top命令,按f,再按j,可以看到進程使用的CPU是哪個,或者taskset -p 進程id
綁定方法,使用taskset將ab綁定

 ulimit -c unlimited
    cpuid=$( cat /proc/cpuinfo |grep -E 'processor.*:.*'|awk -F '[ :]' '{print $NF}'|tail -n1 )
    nc=$(nice) ; nc=$(( 0 - $nc + 3))
    taskset -c ${cpuid} nice -n $nc ./${CHANNEL_SERVER} -c ../conf/ncs_agent.xml >/dev/null 2>&1

或者將nginx綁定在其他核

調整nginx優先級
nc=-10
renice -n $nc -p $$

nginx 1.9.10 已經支持自動CPU親緣性,即worker_cpu_affinity auto; 參數

參考

參考:

https://blog.51cto.com/purplegrape/1252197

https://www.jianshu.com/p/b932ca0726f3

https://www.liaoxuefeng.com/article/990311924891552

https://blog.creke.net/762.html

https://www.jianshu.com/p/b932ca0726f3

https://blog.csdn.net/qq_30038111/article/details/79794377

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