在 Ubuntu 上的 Nginx 高并发配置实践

在 Ubuntu 上的 Nginx 高并发配置实践

💡 原文中文,约1400字,阅读约需4分钟。
📝

内容提要

本文分享了在2核2G的Ubuntu上对Nginx进行高并发配置的经验。主要调整包括修改Linux文件打开数限制、Nginx配置文件及内核参数,以支持更高的并发连接。建议重启系统以应用内核参数更改。

🔎

延伸解读

并发数高于请求数的原因

文章指出,当Nginx后端有业务服务时,若业务处理速度跟不上请求速率,Nginx需要维护连接等待后端响应,导致并发连接数大于每秒请求数。例如,每秒请求1千3,但并发量可达3千。这提醒读者,在评估Nginx并发能力时,需考虑后端处理延迟对连接数的影响。

文件打开数限制的多层调整

文章强调,Linux中TCP连接以文件形式存在,因此需调整多个层面的文件打开数限制:用户级(/etc/security/limits.conf)、系统级(/etc/systemd/system.conf)、内核级(/etc/sysctl.conf)以及Nginx自身配置(worker_rlimit_nofile和worker_connections)。这些调整需协调一致,才能有效支持高并发连接。

内核参数调整与验证方法

文章建议,修改内核参数后最好重启系统以生效,若不能重启可执行sysctl -p。调整后,可通过ulimit -n查看当前限制,并通过ps找到Nginx进程号,再查看/proc/[pid]/limits中的Max open files值,确认限制是否已变更。这提供了配置后的验证手段。

❓

Q&A

如何在 Ubuntu 上配置 Nginx 以支持高并发?

在 Ubuntu 上配置 Nginx 以支持高并发,需要调整 Linux 文件打开数限制、Nginx 配置文件及内核参数,具体包括修改 /etc/security/limits.conf、/etc/systemd/system.conf 和 /etc/sysctl.conf 文件。

为什么请求量和并发量不一致?

请求量每秒 1300,但并发量可达 3000,原因是后端业务处理时间导致 Nginx 需要维护连接等待响应。

如何检查 Nginx 进程的文件打开数限制?

可以通过 ps 命令找到 Nginx 进程编号,然后查看 /proc/[pid]/limits 文件,检查 Max open files 的限制。

在配置 Nginx 时需要设置哪些参数?

需要设置的参数包括 worker_rlimit_nofile 和 worker_connections 的值,以及根据后端服务调整请求头和请求体的大小。

修改内核参数后需要重启系统吗?

建议重启系统以应用内核参数更改,或者可以使用 sysctl -p 命令在不重启的情况下应用更改。

如何调整 Linux 的文件打开数限制?

可以通过编辑 /etc/security/limits.conf 文件,设置 www-data 用户的软限制和硬限制为 1048576,来调整文件打开数限制。

🏷️

标签

➡️

继续阅读