優化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(有意向可以添加)