首頁  >  文章  >  運維  >  nginx中必須設定的參數介紹

nginx中必須設定的參數介紹

王林
王林轉載
2020-11-12 16:00:082702瀏覽

nginx中必須設定的參數介紹

一:main參數

1.1 worker_processes

# 指定nginx开启worker工作子进程数量# number默认1,建议配置数量与CPU核心数量相等worker_processes number复制代码

1.2 worker_cpu_affinity

# nginx默认未开启利用多核CPU,开启某个核心该位置标志为1即可# worker_processes 最多开启8个,所以多核最多8个也就够用。示例配置开启4核worker_cpu_affinity 00000001 00000010 00000100 00001000复制代码

1.3 worker_priority

# 进程优先级,数值越低占用资源越多# number默认10,值范围-20 ~ 20# 建议配置-10即可,最好别低于Linux系统进程-5优先级worker_priority number复制代码

1.4 worker_rlimit_nofile

# 一个子进程可以打开文件描述限制# nginx默认一个子进程打开文件描述限制数量 = (ulimt -u) / worker_processes# 因为进程处理连接任务很多时候不均衡,所以最好设置为与系统数量一致worker_rlimit_nofile (ulimit -u)复制代码

1.5 error_log

# file指定日志输出文件位置,默认logs/error.log# level指定日志输出最低级别,默认error级别。当然可以设置为debug、info等error_log file [level]复制代码

1.6 pid

# file默认值logs/pid.log,指定nginx中master进程的PID输出文件位置pid file复制代码

1.7 user

# user第二个参数user,配置nginx进程运行用户,默认nobody# group配置nginx进程运行用户组,默认nobodyuser user [group]复制代码

二:Events參數

#2.1 worker_connections

#
# nginx指定一个子进程可处理连接数量# number默认数量1024# nginx可处理连接总数 = worker_processes * worker_connecitonsworker_connections  number复制代码

2.2 accept_mutex

accept_mutex參數為工作進程處理連接accept互斥鎖開關,1.11.3之前預設on,之後的版本則是預設off

2.2.1 驚群現象

Nginx可以透過worker_processes參數配置多個工作進程,多個工作進程fork後會監聽同一個連接埠。如果有一個外部連線進來就會喚醒所有子程序搶奪該連線,除一個子程序成功處理accept事件意外子程序都會重新休眠。導致很多不必要的上下文切換。這就是驚群現象

2.2.2 accept鎖處理

nginx透過增加accept互斥鎖讓註冊到epoll中的進程只有一個,從而避免驚群現象。也就是連接進來時只能有一個子進程去處理

尝试获取accept锁if success
    在epoll中注册accept事件else
    在epoll中注销accept事件
处理所有连接事件
释放accept锁复制代码
2.2.3 accept鎖定缺點

accept鎖定看似完美解決了驚群現象帶來的問題,但是也帶來了某些子進程很忙,某些子進程很閒的問題,特別是在吞吐並發比較高的應用中。通俗來講就是worker子進程負載不均問題

2.2.4 配置建議
  • 對於分散式應用短連接來講最好是打開該參數,這樣避免過多的上下文切換開銷
  • 對於長連接應用最好是關閉該參數,避免過多連接負載到一個worker上導致某個進程CPU利用率過高

2.3 accept_mutex_delay

當accept_mutex設定為on後就需要根據應用場景調試accept_mutex_delay參數,該參數規定所有子進程多少時間後重新搶奪accept鎖定。合適的參數值有助於減少worker負載不平衡問題。預設值500ms

相關推薦:nginx教學

以上是nginx中必須設定的參數介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.im。如有侵權,請聯絡admin@php.cn刪除