nginx可以最佳化的地方介紹
這篇文章帶給大家的內容是關於nginx可以優化的地方介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
worker_processes 8;
nginx進程數,建議依照cpu數目來指定,一般為它的倍數。
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
為每個行程分配cpu#,上例將##8個行程被分配到8個cpu#,當然可以寫多個,或是將一個行程分配到多個 #cpu。
worker_rlimit_nofile 102400;
這個指令是指當一個nginx行程開啟的最多檔案描述符數目,理論值應該是最多開啟檔案數( ulimit n)與nginx#進程數相除,但nginx分配請求並不是那麼均勻,所以最好與ulimit n的值保持一致。
use epoll;
使用epoll的I/O模型,這個不用說了吧。
worker_connections 102400;
每個行程允許的最多連線數, 理論上每台nginx 伺服器的最大連線數為 #worker_processes*worker_connections。
keepalive_timeout 60;
keepalive超時時間。
client_header_buffer_size 4k;
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過# 1k , 不過由於一般系統分頁都要大於1k ,所以這裡設定為分頁大小。分頁大小可以用指令getconf PAGESIZE來取得。
open_file_cache max=102400 inactive=20s;
這個將為開啟檔案指定緩存,預設是沒有啟用的,max#指定快取數量,建議和開啟檔案數一致,inactive是指經過多久檔案沒被要求後刪除快取。
open_file_cache_valid 30s;
這個是指多久檢查一次快取的有效資訊。
open_file_cache_min_uses 1;
open_file_cache指令中的inactive參數時間內檔案的最少使用次數,如果超過這個數字,檔案描述符一直
是在快取中開啟的,如果有一個檔案在inactive時間內一次沒被使用,它將被移除。
核心參數的最佳化net.ipv4.tcp_max_tw_buckets = 6000
timewait的數量,預設是180000。
net.ipv4.ip_local_port_range = 1024 65000
#允許系統開啟的連接埠範圍。
net.ipv4.tcp_tw_recycle = 1
啟用timewait快速回收。
net.ipv4.tcp_tw_reuse = 1
開啟重複使用。允許將TIMEWAIT sockets重新用於新的TCP連接。
net.ipv4.tcp_syncookies = 1
SYN Cookies#,當出現SYN等待佇列溢出時,啟用cookies來處理。
net.core.somaxconn = 262144
web在應用程式中#listen 函數的backlog預設會給我們核心參數的net.core.somaxconn限製到 128,而nginx已定 義的NGX_LISTEN_BACKLOG#預設為#511,所以有必要調整這個值。
net.core.netdev_max_backlog = 262144
每個網路介面接收封包的速率比核心處理這些封包的速率快時,允許送到佇列的資料包的最大數目。
net.ipv4.tcp_max_orphans = 262144
系統中最多有多少個#TCP#套接字不被關聯到任何一個使用者文件句柄上。如果超過這個數字,孤兒連結將即刻 被重設並印出警告訊息。這個限制只是為了防止簡單的DoS攻擊,不能過分依靠它或人為地減小這個值,更應該增加這個值#( 如果增加了記憶體之後)。
net.ipv4.tcp_max_syn_backlog = 262144
記錄的那些尚未收到客戶端確認訊息的連線請求的最大值。對於有128M記憶體的系統而言,預設值是1024, 小記憶體的系統則是128。
net.ipv4.tcp_timestamps = 0
時間戳可以避免序號的捲繞。一個1Gbps的連結一定會遇到先前用過的序號。時間戳能夠讓核心接受這 種「異常」的封包。這裡需要將其關掉。
net.ipv4.tcp_synack_retries = 1
為了開啟對端的連接,核心需要傳送一個SYN並附帶一個回應前面一個SYN的ACK。也就是所謂三次握手中 的第二次握手。這個設定決定了內核放棄連線之前發送SYN ACK#套件的數量。
net.ipv4.tcp_syn_retries = 1
在内核放弃建立连接之前发送SYN包的数量。
net.ipv4.tcp_fin_timeout = 1
如果套接字由本端要求关闭,这个参数决定了它保持在FINWAIT2状态的时间。对端可以出错并永远不关 闭连接,甚至意外当机。缺省值是60秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是, 即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN WAIT2的危 险性比FINWAIT1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。
net.ipv4.tcp_keepalive_time = 30
当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时。
一个完整的内核优化配置
net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 16384 4194304 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144 net.core.somaxconn = 262144 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1
以上是nginx可以最佳化的地方介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

如何解決 Nginx 403 Forbidden 錯誤?檢查文件或目錄權限;2. 檢查 .htaccess 文件;3. 檢查 Nginx 配置文件;4. 重啟 Nginx。其他可能原因還包括防火牆規則、SELinux 設置或應用程序問題。

服務器無權訪問所請求的資源,導致 nginx 403 錯誤。解決方法包括:檢查文件權限。檢查 .htaccess 配置。檢查 nginx 配置。配置 SELinux 權限。檢查防火牆規則。排除其他原因,如瀏覽器問題、服務器故障或其他可能的錯誤。

解決 Nginx 跨域問題有兩種方法:修改跨域響應頭:添加指令以允許跨域請求,指定允許的方法和頭,以及設置緩存時間。使用 CORS 模塊:啟用模塊並配置 CORS 規則,允許跨域請求、方法、頭和設置緩存時間。

在 Linux 中啟動 Nginx 的步驟:檢查 Nginx 是否已安裝。使用 systemctl start nginx 啟動 Nginx 服務。使用 systemctl enable nginx 啟用在系統啟動時自動啟動 Nginx。使用 systemctl status nginx 驗證啟動是否成功。在 Web 瀏覽器中訪問 http://localhost 查看默認歡迎頁面。

問題的答案:304 Not Modified 錯誤表示瀏覽器已緩存客戶端請求的最新資源版本。解決方案:1. 清除瀏覽器緩存;2. 禁用瀏覽器緩存;3. 配置 Nginx 允許客戶端緩存;4. 檢查文件權限;5. 檢查文件哈希;6. 禁用 CDN 或反向代理緩存;7. 重啟 Nginx。

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

查看 Nginx 運行狀態的方法有:使用 ps 命令查看進程狀態;查看 Nginx 配置文件 /etc/nginx/nginx.conf;使用 Nginx 狀態模塊啟用狀態端點;使用 Prometheus、Zabbix 或 Nagios 等監控工具。
