[Nginx入門到實戰]知識點補充-Nginx的優化參數worker_connections


我的實戰課程(Nginx的服務優化篇中),同學得提出的問題,如下:
圖片描述

關於Nginx的worker_connections到底是什么?如果設置過小會有什么影響,下面我用一個場景演示下:

  1. 首先,我的場景如下:

圖片描述

  1. 然后,說下Nginx下的配置

1、nginx.conf

worker_processes 1; events { worker_connections 6; }

2、default.conf

 location / { proxy_pass http://www.youku.com/; index index.html index.htm; } location /status { stub_status on; }

3 最后,用ab 工具進行壓測:

場景1、將worker_connections 2,ab -c 1

curl的結果如下:

$ curl -I http://116.62.103.228/ HTTP/1.1 500 Internal Server Error Server: nginx/1.12.1 Date: Tue, 15 Aug 2017 13:58:05 GMT Content-Type: text/html Content-Length: 537 Connection: close ETag: "5964d79b-219

場景2、將worker_connections 4,ab -c 1
curl 正常,返回200;
然后,將worker_connections 6,ab -c 2
可以支持到並發兩個連接。

場景1、2 結論:反向代理的模式下,客戶端n個請求,服務端需要建立n2+2個連接。發現需要多余出兩個連接
所以 最大的用戶連接數 = (worker_connections worker_processes - 2)/2

場景3、將worker_connections 12,ab -n 20 -c 3 http://116.62.103.228/
訪問我的連接狀態地址:http://116.62.103.228/status
Active connections: 4
用netstat查看:
圖片描述
發現除開本身訪問/status連接,正好連接數為:3個

場景3得出結論:
worker_connections 限制指的是單個worker對並發的連接數。

場景4 加大並發數目 ab -c 9如下:
ab -n 9 -c 9 http://116.62.103.228/
出現這個錯誤:apr_socket_recv: Connection reset by peer
另外,再查看nginx的error log出現如下:

2017/08/15 23:13:36 [alert] 15740#15740: 12 worker_connections are not enough 2017/08/15 23:13:36 [alert] 15740#15740: 12 worker_connections are not enough 2017/08/15 23:13:36 [alert] 15740#15740: 12 worker_connections are not enough 2017/08/15 23:13:36 [alert] 15740#15740: 12 worker_connections are not enou


作者:Jeson
鏈接:https://www.imooc.com/article/19907
來源:慕課網
本文原創發布於慕課網 ,轉載請注明出處,謝謝合作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM