nginx部署及簡單優化

新時代木工發表於2018-08-30

研究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中必做.

 

相關文章