2019獨角獸企業重金招聘python工程師標準》
nginx使用的是固定數量的workers, 每個worker都處理進入的請求。最佳實踐是每個cpu核心配置乙個worker.
如何知道您的系統有幾個cpu?
$ grep ^processor /proc/cpuinfo | wc -l
對於乙個四核處理器,配置檔案類似:
這裡我們提高了worker_connections 設定,定義了每個worker程序能處理多少連線。
伺服器的最大連線數量是:
worker_processes * worker_connections (= 32384 本例中)
這裡啟用了multi_accept,該配置項使
nginx能盡快接收盡可能多的請求,減少客戶端的連線初始化時間。
最後,本例中使用了epoll
的事件模型,這也是最佳實踐建議。
很多使用者會啟用 gzip壓縮模組,使得返回客戶端的內容更簡短,傳輸更快。
但是壓縮會消耗使用者伺服器資源,通過監控cpu使用率(可採用開源hyperic),如果過高,可以考慮禁用壓縮。
通常只壓縮大檔案,避免壓縮那些壓縮效果不好的檔案,例如,可執行檔案等二進位制檔案。
gzip on;
gzip_vary on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "msie [1-6]\.";
上面配置,只對檔案大於10k的文字檔案進行壓縮。
這需要做一些快取設定。最簡單的辦法是將所有的,js等靜態內容設定乙個固定的時間長度:
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$
這裡我們也禁用了**檔案的日誌,將一些檔案字尾檔案的過期時間設定為30天。
如果需要處理大量靜態檔案,需要保持這些檔案控制代碼為開啟狀態,避免後續再次開啟。
下面示例,既可放在nginx配置的 server 部分,也可放在主 http 塊中。:
open_file_cache max=2000 inactive=20s;
open_file_cache_valid 60s;
open_file_cache_min_uses 5;
open_file_cache_errors off;
這裡設定伺服器最大快取2000個開啟的檔案控制代碼,關閉20秒內無請求的檔案控制代碼,控制代碼的有效時間是60秒,並且只有訪問次數超過5次的才會被快取。這樣只快取頻繁訪問的檔案,降低檔案系統的訪問。
很多站點使用了php,例如drupal, wordpress。
由於nginx沒有自己的mod_php,推薦的方式是使用 php-fpm,需要將請求**,例如:
# execute all .php files via php-fpm
location ~ .php$
注意這裡使用了 unix domain-socket 連線 fpm, 所以需要修改/etc/php5/fpm/pool.d/www.conf 如下:
listen = /var/run/php5-fpm.sock
這保證fpm監聽乙個domain socket,而不是預設的( "listen=127.0.0.1:9000
").
預設的php-fpm將啟動一些專用的worker,每個執行乙個php例項。如果記憶體足夠,可以增加worker數量來提公升併發吞吐量。
編輯檔案/etc/php5/fpm/pool.d/
www.conf,改變量量,例如:
; set a fixed number of php workers
pm = static
; start up 12 php processes
pm.max_children = 12
該值需要根據實際環境調整。調整的依據是使用監控工具所採集的資料。
最後可配置php-fpm自動重啟。如果出現問題,例如下面的配置是,在1分鐘內十個子程序死掉,就重啟,允許程序有十秒失去控制。
下面是/etc/php5/fpm/php-fpm.conf 中的全域性配置
:
emergency_restart_threshold 10
emergency_restart_interval 1m
process_control_timeout 10s
優化配置的效果需要實踐檢驗,建議部署乙個監控工具,監控的內容應包括:
nginx:開源版提供的監控指標,僅有如下6個:
從作業系統的角度:應包括nginx程序的cpu使用率,記憶體占用,整體cpu使用率,交換區使用率等指標。
如果是在虛擬機器上執行,還應關注 作業系統的 st( steal time)指標,判斷是否有超賣,過載等現象;
這裡推薦乙個免費開源工具, hyperic
Nginx之 Nginx作為TCP負載均衡
這兩天考慮mysql的集群,考慮負載均衡,了解nginx在版本1.9.0以後支援tcp的負載均衡,具體可以參照官網關於模組ngx stream core module的敘述 nginx從1.9.0後引入模組ngx stream core module,模組是沒有編譯的,需要用到編譯需新增 with ...
利用Tomcat建立多個Web Server的方法
以下內容為網上收集後整理而成,如有錯誤或描述不準確的地方或是別的請多指教.當你使用tomcat作為web server的時候,是不是會想過這樣的乙個問題 如何利用tomcat建立多個web應用 呢?要實現這一點是很簡單的,也有多種方法。以下說明使用 tomcat home 代表tomcat安裝目錄 ...
利用Tomcat建立多個Web Server的方法
以下內容為網上收集後整理而成,如有錯誤或描述不準確的地方或是別的請多指教.當你使用tomcat作為web server的時候,是不是會想過這樣的乙個問題 如何利用tomcat建立多個web應用 呢?要實現這一點是很簡單的,也有多種方法。以下說明使用 tomcat home 代表tomcat安裝目錄 ...