centos7 nginx優化


優化nginx進程個數的策略

在高並發、高訪問量的web服務場景,需要事先啟動好更多的nginx進程,以保證快速響應並處理大量並發用戶的請求。

worker_processes  1;一般調整到與CPU的顆數相同

查看LInux可查看CPU個數及總核數

grep processor /proc/cpuinfo|wc -l

優化綁定不同的nginx進程到不同的CPU上

默認情況下,nginx的進程跑在某一個CPU或CPU的某一個核上,導致nginx進程使用硬件的資源不均,本節的優化是不同的nginx進程給不同的CPU處理,充分有效的利用有效的硬件資源
四核cpu配置
worker_processes    4;
worker_cpu_affinity 0001 0010 0100 1000;

雙核配置
worker_processes    2;
worker_cpu_affinity 0101 1010;

調整nginx單個進程允許的客戶端最大連接數

參數語法:worker_connections number 
默認配置:worker_connections 512 
放置位置:events 標簽  

events {
    worker_connections  1024;    #一個worker進程的並發
}
總並發= worker_processes* worker_connections

配置nginx worker進程最大打開文件數

參數語法:worker_rlimit_nofile number 
放置位置:主標簽段 
說明:作用是改變worker processes能打開的最大文件數

worker_rlimit_nofile 65535;
這各參數受系統文件的最大打開數限制,解決方法:

[root@admin nginx]# cat /proc/sys/fs/file-max
8192
文件系統最大可打開文件數

配置nginx worker進程最大打開文件數

要想ulimits 的數值永久生效,必須修改配置文件/etc/security/limits.conf 
在該配置文件中添加

* soft nofile 65535   
* hard nofile 65535  

echo "* soft nofile 65535"  >> /etc/security/limits.conf

echo "* hard nofile 65535"  >> /etc/security/limits.conf

* 表示所用的用戶

linux最大打開文件數

修改系統總限制
其實上的修改都是對一個進程打開的文件句柄數量的限制,我們還需要設置系統的總限制才可以。

假如,我們設置進程打開的文件句柄數是1024 ,但是系統總線制才500,所以所有進程最多能打開文件句柄數量500。從這里我們可以看出只設置進程的打開文件句柄的數量是不行的。所以需要修改系統的總限制才可以。
echo  6553560 > /proc/sys/fs/file-max

修改nginx.conf
worker_rlimit_nofile 65535;

 nginx事件處理模型優化

nginx的連接處理機制在於不同的操作系統會采用不同的I/O模型,Linux下,nginx使用epoll的I/O多路復用模型,在freebsd使用kqueue的IO多路復用模型,在solaris使用/dev/pool方式的IO多路復用模型,在windows使用的icop等等。 
要根據系統類型不同選擇不同的事務處理模型,選擇有“use [ kqueue | rtsig |epool |dev/pool |select |pllo ];”我們使用的是Centos6.5的linux,因此將nginx的事件處理模型調整為epool模型。

events {
    worker_connections  1024;
    use epoll;
}

隱藏版本號

一般來說,軟件的漏洞都和版本相關,所以我們要隱藏或消除web服務對訪問用戶顯示的各種敏感信息。

vim /usr/local/nginx/conf/nginx.conf
在http模塊下加入:
server_tokens off;

 

 

 

歡迎進群討論:QQ群294668383(有意向可以添加)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM