nginx的配置优化
優化nginx的配置,做到合理高效的使用,讓程序的跑的足夠快,支持足夠多的并發:
目標:
1.盡量提高但臺機器的處理效率
2.盡量減少單臺機器的負載
3.盡量減少磁盤的i/o
4.盡量減少網絡的i/o
5.盡量減少內存的使用
6.盡量高效利用cpu的使用
怎么做?
1.nginx的模塊用到啥,就裝啥,在安裝的時候加上
2.給nginx創建用戶和組,單獨設置權限,會更安全,例如:user nginx ngix
3.worker_processes:通常配置成cpu的總核數,或者其2倍,性能會更好,因為這樣會減少進程間切換帶來的消耗。
4.還可以同時使用worker_cpu_affinity來綁定cpu,使得每個worker進程獨享cpu,實現完全開發,性能會更好,但是這個只對linux系統有效。
5.events里面的時間模型,linux推薦使用epoll模型,FreeBSD推薦采用kqueue。
6.worker_rlimit_nofile:描述一個nginx進程打開的最多的文件數目。配置成跟linux內核下文件打開數一致就行。可以通過ulimit -n 來查看,新裝的系統默認是1021,centOS中可以如下方式進行修改:
在/etc/security/limits.conf最后增加:
*soft nofile 65535
*hard nofile 65535
*soft nproc 65535
*hard nproc 65535
改完后重啟。
7.work_connection:每個進程允許的最多連接數,默認是1024,可以設置大一些。 理論上并發總數是worker_processes和worker_connections的乘積,worker_connections的值設置跟物理內存大小有關,因為系統可以打開的作答文件數和內存大小成正比,一般1GB內存的機器上可以打開的文件數大約是10萬左右,所以,worker_connections的值需要根據worker_processes進程數目和系統可以打開的最大文件總數進行適當的進行設置。
8.keepalive_timeout:設置到65左右就可以,默認是75。
9.client_header_buffer_size:設置請求的緩存,設置為4k,通常微系統分頁大小的整數倍,可以通過 getconf PAGESIZE 來查看系統分頁大小。
10.對打開的文件設置緩存
open_file_cashe max = 建議設置成和每個進程打開的最大文件數一致 inactive=60s
open_file_cashe_valid 90s ;
open_file_cashe_min_uses 2;
open_file_cashe_errors on;
11.盡量開啟Gzip壓縮,gzip_comp_level通常設置成3-5,高了浪費CPU
12.Error日志:生產環境要設成最高也就是crit,可以減少I/O
13.access日志優化:如果有其他統計軟件,可以關閉日志,減少磁盤寫,或者寫入內存文件,提高I/O效率
14.sendfile 指令指定 nginx是否調用sendfile函數(zero copy 方式)輸出文件,通常設置成on,如果是下載的應用磁盤IO重負載應用,可設置為off
15.buffers size 優化: 如果buffer size 太小就會導致nginx使用臨時文件存儲response,這回引起磁盤讀寫IO,流量越大問題越明顯。
16.worker_priority 進程優先級設置:linux系統中,優先級搞得進程會占用更多的系統資源,這里配置的是進程的靜態優先級,取值范圍 -20到+19,-20級別最高。因此可以把這個設置小一點,但不建議比內核進程的值低(通常為-5)
17.合理設置靜態資源的瀏覽器緩存時間,盡量使用瀏覽器緩存
18.負載均衡鎖accept_mutex,建議開啟,默認就是開啟的
19.如果使用ssl的話,而且服務器上有ssl硬件加速設備的話,請開啟硬件加速。
稍微整理一下,優化要根據具體實際的應用和服務器才有意義。。。。。。。。。。。。。。。。。。。。。。
總結
以上是生活随笔為你收集整理的nginx的配置优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单机版音乐播放器--ZTPlayer
- 下一篇: 课程设计感想(大二)