文章插圖

文章插圖
通常來說,一個正常的 Nginx Linux 服務器可以達到 500,000 – 600,000 次/秒 的請求處理性能,如果Nginx服務器經過優化的話,則可以穩定地達到 904,000 次/秒 的處理性能,大大提高Nginx的并發訪問量 。
這里需要特別說明的是:
1、本文中所有列出來的配置都是在我的測試環境驗證的,你需要根據你服務器的情況進行配置 。
一、優化思路
1、nginx接受的tcp連接多,能否建立起來?
2、nginx響應過程,要打開許多文件,能否打開?
所以,只要我們針對上面兩個限制進行優化,就能大幅提升Nginx的效率 。
二、優化步驟
我們知道Nginx的工作流程如下圖所示:
1. 找到Nginx服務器瓶頸 。
2. 優化配置 。
3. 重新壓力測試
注意:在配置修改之后務必要進行壓力測試,這樣可以觀測到具體是哪個配置修訂的優化效果最明顯 。通過這種有效測試方法可以為你節省大量時間 。
二、找出Nginx的瓶頸
1. 打開Apache ab壓力測試工具,輸入如下命令:ab -n 200000 -c 5000 http://localhost:8080/index.html 。
在瀏覽器中輸入nginx的地址:http://127.0.0.1/status,查看nginx的狀態信息 。
Nginx 狀態信息打開的方法,這里就不細說了,不清楚的可以看我之前的文章,《Nginx總結(八)啟用Nginx Status及狀態參數詳解》
三、優化配置
根據上面的方法總結起來,一般來說nginx 配置文件中對優化比較有作用的為以下幾項:
Nginx優化配置項:
1)優化 workprocess,cpu
worker_processes 8;// 根據CPU核數配置worker_cpu_affinity 00000001 00000010 00000100 00001000 0001000000100000 01000000 10000000;2)事件處理模型優化nginx的連接處理機制在于不同的操作系統會采用不同的I/O模型,Linux下,nginx使用epoll的I/O多路復用模型,在freebsd使用kqueue的IO多路復用模型,在solaris使用/dev/pool方式的IO多路復用模型,在windows使用的icop等等 。要根據系統類型不同選擇不同的事務處理模型,我們使用的是Centos,因此將nginx的事件處理模型調整為epoll模型 。
events {worker_connections10240;//use epoll;}說明:在不指定事件處理模型時,nginx默認會自動的選擇最佳的事件處理模型服務 。3)設置work_connections 連接數
worker_connections10240; 4)每個進程的最大文件打開數worker_rlimit_nofile 65535;# 一般等于ulimit -n系統值5)keepalive timeout會話保持時間keepalive_timeout60;6)GZIP壓縮性能優化gzip on;#表示開啟壓縮功能gzip_min_length1k; #表示允許壓縮的頁面最小字節數,頁面字節數從header頭的Content-Length中獲取 。默認值是0,表示不管頁面多大都進行壓縮,建議設置成大于1K 。如果小于1K可能會越壓越大gzip_buffers4 32k; #壓縮緩存區大小gzip_http_version 1.1; #壓縮版本gzip_comp_level 6; #壓縮比率,一般選擇4-6,為了性能gzip_types text/css text/xml application/javascript;#指定壓縮的類型 gzip_vary on; #vary header支持7)proxy超時設置proxy_connect_timeout 90;proxy_send_timeout90;proxy_read_timeout4k;proxy_buffers 4 32k;proxy_busy_buffers_size 64k8)高效傳輸模式sendfile on; # 開啟高效文件傳輸模式 。tcp_nopush on; #需要在sendfile開啟模式才有效,防止網路阻塞,積極的減少網絡報文段的數量 。將響應頭和正文的開始部分一起發送,而不一個接一個的發送 。Linux系統內核層面:Nginx要達到最好的性能,出了要優化Nginx服務本身之外,還需要在nginx的服務器上的內核參數 。
這些參數追加到/etc/sysctl.conf,然后執行sysctl -p 生效 。
1)調節系統同時發起的tcp連接數net.core.somaxconn = 262144
2)允許等待中的監聽
net.core.somaxconn = 4096
3) tcp連接快速回收
4) tcp連接重用
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
5)不抵御洪水攻擊
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_orphans = 262144 #該參數用于設定系統中最多允許存在多少TCP套接字不被關聯到任何一個用戶文件句柄上,主要目的為防止Ddos攻擊
6)最大文件打開數
ulimit -n 30000
最后
【高并發服務器開發 高并發服務器配置】以上,就把Nginx服務器高性能優化的配置介紹完了,大家可以根據我提供的方法,每個參數挨個設置一遍,看看相關的效果 。這些都是一點點試出來的,這樣才能更好的理解各個參數的意義 。
- java工程師考試條件 java高級工程師證怎么報名考
- 2004年高考數學湖北卷 2004高考數學
- 2004年江蘇高考成績排名 2004江蘇高考
- 山東省2004年高考分數線 2004年高考分數線
- 2003高考語文作文彌子瑕 2003高考語文作文
- 2003高考語文最高分 2003高考語文
- 2003年山東高考狀元 2003高考狀元
- 2003高考滿分作文普朗克的懺悔書 2003高考滿分作文
- 2003高考分數線河南 2003高考分數線
- 天津高考作文題 2003高考作文題
