日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile

發(fā)布時間:2024/9/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考nginx官網:http://nginx.org/en/docs/ngx_core_module.html#worker_connections

?

? ?從用戶的角度,http 1.1協議下,由于瀏覽器默認使用兩個并發(fā)連接,因此計算方法:

? ?nginx作為http服務器的時候:

? ? max_clients = worker_processes * worker_connections/2

? ?nginx作為反向代理服務器的時候:

? ? max_clients = worker_processes * worker_connections/4 ?(

官方wiki(頁面標記已經過時,但是網上很多文章都在引用)看到一個關于為什么除以4的解釋:

?

?

? ?

?如果作為反向代理,因為瀏覽器默認會開啟2個連接到server,而且Nginx還會使用fds(file descriptor)從同一個連接池建立連接到upstream后端。則最大連接數的計算公式如下:

?

或者從一般建立連接的角度:客戶并發(fā)連接為1.

? ?nginx作為http服務器的時候:

? ? max_clients = worker_processes * worker_connections

? ?nginx作為反向代理服務器的時候:

? ? max_clients = worker_processes * worker_connections/2

?

nginx做反向代理時,和客戶端之間保持一個連接,和后端服務器保持一個連接。

但是怎樣合理的設置worker_processes與worker_connections這兩個參數?

worker_processes :

? worker角色的進程個數(nginx啟動后有多少個worker處理http請求。master不處理請求,而是根據相應配置文件信息管理worker進程.? ?master進程主要負責對外攬活(即接收客戶端的請求),并將活兒合理的分配給多個worker,每個worker進程主要負責干活(處理請求))。

? ?

最理想的worker_processes值取決于很多因素,包含但不限于CPU的核數,存儲數據的硬盤驅動器個數(跟這個有什么關系?難道和cpu一樣,存在跨區(qū)域讀取數據問題),以及負載模式(?這個是什么?)當其中任何一個因素不確定的時候,將其設置為cpu核數或許是一個比較好的初始值,“自動”也基本是如此確認一個參數值的。

?“自動”這個參數值是從nginx 1.3.8和nginx 1.2.5 開始進行支持的,自動參數可以自動檢測 cpu cores 并設置 worker_processes 參數 。

?在網上也看到以下建議:

? ? ? ?nginx doesn't benefit from more than one worker per CPU.

? ? ? ?一個cpu配置多于一個worker數,對nginx而言沒有任何益處。

?If Nginx is doing CPU-intensive work such as SSL or gzipping and you have 2 or more CPUs/cores, then you may set worker_processes to be equal to the number of CPUs or cores.

? ? 如果nginx處理的是cpu密集型(比較耗費cpu的)的操作,建議將此值設置為cpu個數或cpu的核數。

? ? cpu相關信息查看:

    邏輯CPU個數:
??     ? ?# cat /proc/cpuinfo | grep "processor" | wc -l

?    物理CPU個數:
??    ? ? ?# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

    ?每個物理CPU中Core的個數:
??    ? ?# cat /proc/cpuinfo | grep "cpu cores" | wc -l

worker_connections:

官方解釋如下,個人認為是每一個worker進程能并發(fā)處理(發(fā)起)的最大連接數(包含所有連接數)。

不能超過最大文件打開數:在linux終端中輸入ulimit?-a進行查看

?

worker_rlimit_nofile

  • 英文原文:

Syntax: worker_rlimit_nofile number;

Default:??? —

Context:??? main

Changes the limit on the maximum number of open?files (RLIMIT_NOFILE) for?worker processes. Used to increase the limit without restarting the main process.

  • 中文翻譯:

為nginx工作進程改變打開最多文件描述符數目的限制。用來在不重啟主進程的情況下增加限制。

例如:

worker_rlimit_nofile 204800;

理論上這個值是最多打開文件數(ulimit -n)與nginx工作進程相關

?

參考:

http://www.jb51.net/LINUXjishu/164573.html ?最大文件打開數相關描述

https://blog.csdn.net/sole_cc/article/details/52433353

來源:https://www.cnblogs.com/nulige/p/9369837.html

總結

以上是生活随笔為你收集整理的nginx最大并发连接数的思考:worker_processes、worker_connections、worker_rlimit_nofile的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。