国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

幫助中心 >  技術(shù)知識庫 >  虛擬主機(jī) >  虛擬主機(jī)基礎(chǔ)知識 >  Nginx使用教程(二):Nginx配置性能優(yōu)化之worker配置

Nginx使用教程(二):Nginx配置性能優(yōu)化之worker配置

2017-03-01 00:01:19 11090

Nginx使用教程(二):Nginx配置性能優(yōu)化之worker配置


配置Nginx workers



NGINX根據(jù)指定的配置運行固定數(shù)量的工作進(jìn)程。 這些工作進(jìn)程負(fù)責(zé)處理所有處理。 在下面的章節(jié)中,我們將調(diào)整NGINX worker參數(shù)。 這些參數(shù)是NGINX全局上下文的一部分。

worker_processes

worker_processes指令控制工作進(jìn)程數(shù):

  1. worker_processes 1;

其默認(rèn)值為1,這意味著NGINX只運行一個worker。 該值應(yīng)根據(jù)可用內(nèi)核數(shù),磁盤,網(wǎng)絡(luò)子系統(tǒng),服務(wù)器負(fù)載等更改為最佳值。
我們可以將值設(shè)置為可用的核心數(shù)。 使用lscpu確定可用的核心數(shù):

  1. $ lscpu

  2. Architecture:  x86_64

  3. CPU op-mode(s):  32-bit, 64-bit

  4. Byte Order:  Little Endian

  5. CPU(s):        4

同樣可以通過grep cpuinfo得到:

  1. $ cat /proc/cpuinfo | grep 'processor' | wc -l

現(xiàn)在我們設(shè)置worker數(shù)為4:

  1. # One worker per CPU-core.

  2.    worker_processes 4;

或者,可以將其設(shè)置為auto。 這樣nginx會自動根據(jù)核心數(shù)為生成對應(yīng)數(shù)量的worker進(jìn)程。

accept_mutex

由于我們在NGINX中配置了多個workers,因此我們還應(yīng)配置影響worker的相關(guān)指令。 events區(qū)域下accept_mutex參數(shù)將使每個可用的worker進(jìn)程逐個接受新連接。 默認(rèn)情況下,該標(biāo)志設(shè)置為on。 如:

  1. events {

  2.      accept_mutex on;

  3. }

如果accept_mutex為off,所有可用的worker將從等待狀態(tài)喚醒,但只有一個worker處理連接。 這導(dǎo)致驚群現(xiàn)象,每秒重復(fù)多次。 這種現(xiàn)象導(dǎo)致服務(wù)器性能下降,因為所有被喚醒的worker都在占用CPU時間。 這導(dǎo)致增加了非生產(chǎn)性CPU周期和未使用的上下文切換。

accept_mutex_delay

當(dāng)啟用accept_mutex時,只有一個具有互斥鎖的worker程序接受連接,而其他工作程序則輪流等待。 accept_mutex_delay對應(yīng)于worker等待的時間幀,然后它嘗試獲取互斥鎖并開始接受新的連接。 默認(rèn)值為500毫秒

  1. events{

  2.      accept_mutex_delay 500ms;

  3.  }

worker_connections

下一個要查看的配置是worker_connections,默認(rèn)值為512.該指令設(shè)置worker進(jìn)程最大打開的連接數(shù):

  1. events{

  2.       worker_connections 512;

  3. }

將worker_connections增加到1024或更高的值,以允許同時處理更多連接。

worker_rlimit_nofile

同時連接的數(shù)量受限于系統(tǒng)上可用的文件描述符的數(shù)量,因為每個套接字將打開一個文件描述符。 如果NGINX嘗試打開比可用文件描述符更多的套接字,會發(fā)現(xiàn)error.log中出現(xiàn)Too many opened files的信息。
使用ulimit檢查文件描述符的數(shù)量:

  1. $ ulimit -n

現(xiàn)在,將此值增加到大于worker_processes * worker_connections的值。 應(yīng)該是增加當(dāng)前worker運行用戶的最大文件打開數(shù)值。
NGINX提供了worker_rlimit_nofile指令,這是除了ulimit的一種設(shè)置可用的描述符的方式。 該指令與使用ulimit對用戶的設(shè)置是同樣的效果。此指令的值將覆蓋ulimit的值,如:

  1. worker_rlimit_nofile 20960;

multi_accept

multi_accept指令使得NGINX worker能夠在獲得新連接的通知時盡可能多的接受連接。 此指令的作用是立即接受所有連接放到監(jiān)聽隊列中。 如果指令被禁用,worker進(jìn)程將逐個接受連接。

  1. events{

  2.       multi_accept on;

  3. }



提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: