研究nginx優化時反覆安裝清理nginx,為方便做了一個簡單部署腳本,用的最新穩定版1.14.0,預設路徑,加入systemd系統進程管理中,可以通過systemd管理nginx的啟動、終止、重載、狀態、開機自啟等. 需要再次覆蓋nginx時,用awk找到nginx的進程然後kill掉,再次執行安 ...
研究nginx優化時反覆安裝清理nginx,為方便做了一個簡單部署腳本,用的最新穩定版1.14.0,預設路徑,加入systemd系統進程管理中,可以通過systemd管理nginx的啟動、終止、重載、狀態、開機自啟等.
1 #!/bin/bash 2 3 yum -y install gcc pcre pcre-devel 4 sleep 2 6 cd ~ 7 tar -zxvf ~/zlib-1.2.11.tar.gz 8 cd ~/zlib-1.2.11 && ./configure && make && make install 10 cd ~ 11 tar -zxvf ~/nginx-1.14.0.tar.gz 12 cd ~/nginx-1.14.0 && ./configure && make && make install 14 cd ~ 16 #/usr/local/nginx/sbin/nginx 19 firewall-cmd --set-default-zone=trusted 21 touch /lib/systemd/system/nginx.service 23 echo "[Unit] 24 Description=nginx 25 After=network.target 27 [Service] 28 Type=forking 29 ExecStart=/usr/local/nginx/sbin/nginx 30 ExecReload=/usr/local/nginx/sbin/nginx reload 31 ExecStop=/usr/local/nginx/sbin/nginx quit 32 PrivateTmp=true 33 34 [Install] 35 WantedBy=multi-user.target" > /lib/systemd/system/nginx.service 36 37 systemctl enable nginx.service 38 systemctl restart nginx.service 39 40 echo "nginx done"
需要再次覆蓋nginx時,用awk找到nginx的進程然後kill掉,再次執行安裝腳本就行.
1 kill -9 $`ps aux | grep 'nginx' | awk 'NR==2{print $2}'`
二、nginx優化
nginx優化配置集中在nginx.conf文件的main和events段.
main段中worker配置,可以通過work_cpu_affinity選項,按任務類型:CPU密集型或者IO密集型,根據實際業務情況綁定每個worker進程運行在哪個CPU核心上,(前提是系統必須為多核心CPU),例如
1 # 4核心CPU中,開啟4個worker,每個worker分別對應cpu0/cpu1/cpu2/cpu. 2 worker_processes 4; 3 worker_cpu_affinity 0001 0010 0100 1000; 4 5 # 4核心CPU中,也可以只開啟2個worker,第一個worker對應cpu0/cpu2,第二個worker對應cpu1/cpu3. 6 worker_processes 2; 7 worker_cpu_affinity 0101 1010;
envents段中開啟集中一次性接入連接請求和串列方式接入新連接
events { worker_connections 1024; # 每個worker最大連接數. multi_accept on; # 是否集中接入監聽到的連接請求,預設為off,關閉時一次只接收一個連接. accept_mutex on # 預設為on,表示以串列方式接入新連接,off時,將通報給所有worker.
其它的,例如HTTP段優化,sendfile、keepalive_timeout、gzip是nginx中必做.