修改 Nginx 程式最大可開啟檔案數(worker processes和worker connections)
worker_processes:作業系統啟動多少個工作程式執行Nginx。注意是工作程式,不是有多少個nginx工程。在Nginx執行的時候,會啟動兩種程式,一種是主程式master process;一種是工作程式worker process。例如我在配置檔案中將worker_processes設定為4,啟動Nginx後,使用程式檢視命令觀察名字叫做nginx的程式資訊,我會看到如下結果:
[root@localhost nginx]# ps -elf | grep nginx4 S root 2203 2031 0 80 0 - 46881 wait 22:18 pts/0 00:00:00 su nginx4 S nginx 2204 2203 0 80 0 - 28877 wait 22:18 pts/0 00:00:00 bash5 S root 2252 1 0 80 0 - 11390 sigsus 22:20 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf5 S nobody 2291 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process5 S nobody 2292 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process5 S nobody 2293 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process5 S nobody 2294 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process0 R root 2312 2299 0 80 0 - 28166 - 22:24 pts/0 00:00:00 grep --color=auto nginx
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
圖中可以看到1個nginx主程式,master process;還有四個工作程式,worker process。主程式負責監控埠,協調工作程式的工作狀態,分配工作任務,工作程式負責進行任務處理。一般這個引數要和作業系統的CPU核心數成倍數。
worker_connections:這個屬性是指單個工作程式可以允許同時建立外部連線的數量。無論這個連線是外部主動建立的,還是內部建立的。這裡需要注意的是,一個工作程式建立一個連線後,程式將開啟一個檔案副本。所以這個數量還受作業系統設定的,程式最大可開啟的檔案數有關。
設定Nginx程式最大可開啟檔案數
1、更改作業系統級別的“程式最大可開啟檔案數”的設定
Linux問題—設定“程式最大可開啟的檔案數”永久有效的方式。
2、更改Nginx軟體級別的“程式最大可開啟檔案數”的設定
剛才更改的只是作業系統級別的“程式最大可開啟檔案”的限制,作為Nginx來說,我們還要對這個軟體進行更改。開啟nginx.conf主配置檔案。您需要配合worker_rlimit_nofile屬性。如下:
user root root;
worker_processes 4;
worker_rlimit_nofile 65535;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;
events {
use epoll;
worker_connections 65535;
}
這裡只貼上了部分程式碼,其他的配置程式碼和主題無關,也就不需要貼上了。請注意程式碼行中加粗的兩個配置項,請一定兩個屬性全部配置。配置完成後,請通過nginx -s reload命令重新啟動Nginx。
3、驗證Nginx的“程式最大可開啟檔案數”是否起作用
那麼我們如何來驗證配置是否起作用了呢?在linux系統中,所有的程式都會有一個臨時的核心配置檔案描述,存放路徑在 /pro/程式號/limit。
首先我們來看一下,沒有進行引數優化前的程式配置資訊:
[root@localhost nginx]# ps -elf | grep nginx4 S root 2203 2031 0 80 0 - 46881 wait 22:18 pts/0 00:00:00 su nginx4 S nginx 2204 2203 0 80 0 - 28877 wait 22:18 pts/0 00:00:00 bash5 S root 2252 1 0 80 0 - 11390 sigsus 22:20 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf5 S nobody 2291 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process5 S nobody 2292 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process5 S nobody 2293 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process5 S nobody 2294 2252 0 80 0 - 11498 ep_pol 22:23 ? 00:00:00 nginx: worker process0 R root 2318 2299 0 80 0 - 28166 - 22:42 pts/0 00:00:00 grep --color=auto nginx
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
可以看到,nginx工作程式的程式號是:2291 2292 2293 2294。我們選擇一個程式,檢視其核心配置資訊:
[root@localhost nginx]# cat /proc/2291/limitsLimit Soft Limit Hard Limit UnitsMax cpu time unlimited unlimited secondsMax file size unlimited unlimited bytesMax data size unlimited unlimited bytesMax stack size 8388608 unlimited bytesMax core file size 0 unlimited bytesMax resident set unlimited unlimited bytesMax processes 3829 3829 processesMax open files 1024 4096 filesMax locked memory 65536 65536 bytesMax address space unlimited unlimited bytesMax file locks unlimited unlimited locksMax pending signals 3829 3829 signalsMax msgqueue size 819200 819200 bytesMax nice priority 0 0Max realtime priority 0 0Max realtime timeout unlimited unlimited us
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
請注意其中的Max open files ,分別是1024和4096。那麼更改配置資訊,並重啟Nginx後,配置資訊就是下圖所示了:
[root@localhost conf]# cat /proc/2351/limitsLimit Soft Limit Hard Limit UnitsMax cpu time unlimited unlimited secondsMax file size unlimited unlimited bytesMax data size unlimited unlimited bytesMax stack size 8388608 unlimited bytesMax core file size 0 unlimited bytesMax resident set unlimited unlimited bytesMax processes 3829 3829 processesMax open files 65535 65535 filesMax locked memory 65536 65536 bytesMax address space unlimited unlimited bytesMax file locks unlimited unlimited locksMax pending signals 3829 3829 signalsMax msgqueue size 819200 819200 bytesMax nice priority 0 0Max realtime priority 0 0Max realtime timeout unlimited unlimited us
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://blog.csdn.net/jiangjunshow
相關文章
- nginx學習隨筆--worker_processesNginx
- Nginx實現原理master和workerNginxAST
- centos 設定程式最大可開啟的檔案數CentOS
- Nginx(二): worker 程式處理邏輯-流程框架Nginx框架
- Web WorkerWeb
- php-worker 無法啟動PHP
- spark 叢集啟動後,worker 節點worker 程式一段時間後自動結束Spark
- Service Worker初探
- Web Worker 初探Web
- 使用Web Worker優化程式碼Web優化
- web worker的介紹和使用Web
- Apache的prefork模式和worker模式Apache模式
- Linux-CentOS 最大開啟檔案數和程式數LinuxCentOS
- Web Worker在專案中的妙用Web
- Master-Worker 模式AST模式
- 初識Web WorkerWeb
- web worker 小白攻略!!!Web
- Master-Worker模式AST模式
- Web Worker 使用教程Web
- Service Worker入門
- spark core原始碼分析4 worker啟動流程Spark原始碼
- 在專案中使用Service Worker 與 PWA
- 來看看Service Worker的專案實戰
- Linux中修改開啟檔案的數量限制Linux
- 登錄檔檔案修改開啟程式的簡單示例
- ORA-31687: error creating worker process with worker id 1Error
- Nginx學習系列三Nginx的啟動、停止、修改配置檔案後重啟Nginx
- 關於 PHP-fpm master 程式和 worker 職責探討PHPAST
- Service Worker Cache 和 HTTP Cache 的區別HTTP
- JavaScript 效能利器 —— Web WorkerJavaScriptWeb
- Angular 裡的 Service WorkerAngular
- Service Worker的應用
- 動態建立 Web WorkerWeb
- 解讀:nginx的一個神祕配置worker_cpu_affinityNginx
- Giraph原始碼分析(二)—啟動Master/Worker服務原始碼AST
- 效能最佳化之使用vue-worker外掛(基於Web Worker)開啟多執行緒運算提高效率VueWeb執行緒
- ORA-39126: Worker unexpected fatal error in KUPW$WORKER.POST_MT_INITError
- PHP實現master-worker守護多程式PHPAST