NGINX性能优化
来源:     阅读:3
易浩激活码
发布于 2025-11-11 21:13
查看主页

1. 简介

NGINX是一个常见的跨平台多用途服务器。因此,它可以链接内部或外部网络的许多部分,传输和提供对文件和动态数据的访问。实际上,它还可以用作负载均衡器,确保可用性。为此,我们可能需要配置延迟时间以避免 504 网关超时和 408 请求超时等错误。

在本文中,我们将探讨超时以及在 NGINX 中设置和禁用不同超时的方法。第一,我们解释如何在 NGINX 配置中添加选项。之后,我们枚举并描述 NGINX 超时类型和设置。最后,我们展示了一个代码片段来有效地禁用常见超时。

2. 配置 NGINX

超时是给定进程终止的时间段。虽然这可能是实际的 Linux 进程 ID (PID),但超时是一个一般概念。

由于NGINX可以以许多不同的容量提供服务,因此我们可能想要设置的超时可能取决于我们的目标功能。在这里,所有超时都以秒为单位,但我们也可以使用 NGINX 时间单位:

至关重大的是,对于某些设置,使用 0 会立即超时,因此设置不太可能的高值(如 9999999 或简单的 1y)一般是禁用它们的方法。

为了设置选项,我们修改了NGINX配置文件。最佳实践告知我们不应该直接更改nginx.conf,而应该在conf.d中创建.conf文件,一般在/etc/nginx中:

ls /etc/nginx/conf.d
xopt.conf

我们讨论的几乎所有选项都可以在三个块中的任何一个中设置:

为此,我们只需在空格后添加适当的名称及其参数值,并以 ; 分号结束:

cat /etc/nginx/conf.d/xopt.conf
http {
  send_timeout 1800;
}

任何修改后,我们可以检查配置文件语法:

nginx -t -c /etc/nginx/conf.d/xopt.conf
nginx: the configuration file /etc/nginx/conf.d/xopt.conf syntax is ok
nginx: configuration file /etc/nginx/conf.d/xopt.conf test is successful

在这种情况下,nginx 的 -t 标志测试由 -c 指定的文件(一般默认为 /etc/nginx/nginx.conf)。

最后,我们重新加载NGINX:

nginx -s reload
[OR]
systemctl reload nginx
[OR]
service nginx reload

3. 基本 NGINX 超时

几个NGINX超时是基本的,而且相当普遍:

此外,名称解析可能是许多问题的罪魁祸首。通过设置resolver_timeout,我们可以限制或增加使用 NGINX 时解析名称的最长时间(默认为 30)。

此外,ssl_session_timeout是客户端重用 SSL 会话参数的最长时间(默认为 5m)。

以上所有内容都会影响大多数连接。目前,让我们继续讨论一些细节。

4. NGINX 低级 TCP 超时

在较低级别,侦听指令具有用于配置 TCP 侦听套接字的so_keepalive参数。换句话说,通过将其设置为,我们SO_KEEPALIVE启用保持连接机制。

对于支持的操作系统,我们还可以提供以冒号分隔的选项列表:

另一方面,跳过这些参数中的任何一个都会使系统保持默认值。

5. 服务器

服务器指令具有上游模块提供的自己的参数。其中之一是 fail_timeout,它设置在思考服务器不可用(默认值 1)之前尝试max_fails(默认值 010 禁用)服务器联系的最长时间。在进行任何重试之前,此状态将保持一样的时间段。如果我们只有一个服务器,则忽略这些选项。

6. NGINXproxy_*超时

NGINX 有三个常见的代理服务器超时值:

此外,还有一个proxy_cache_lock_timeout,用于定义在打开proxy_cache_lock(默认关闭)时阻止同时缓存请求的最长时间(默认值 5)。过时缓存也可能取决于此超时值。

7. NGINXfastcgi_*超时

当然,NGINX 还提供了 FastCGI 服务器传输约束设置:

同样,
fastcgi_cache_lock_timeout
定义在fastcgi_cache_lock(默认关闭)处于打开状态时阻止同时缓存请求(默认值 5)的最长时间。此外,与 proxy_* 设置类似,过时的缓存可能取决于此超时值。

8. NGINXmemcached_*超时

对于Memcached,NGINX提供了与代理和FastCGI类似的选项:

当然,在这种情况下,我们没有缓存锁。

9. 禁用常见的 NGINX 超时

虽然其他模块也存在类似的设置,但一般来说,为了有效地禁用常见超时选项的效果,我们可以在 http服务器块中使用设置列表:

keepalive_timeout 1d;
send_timeout 1d;
client_body_timeout 1d;
client_header_timeout 1d;
proxy_connect_timeout 1d;
proxy_connect_timeout 1d;
proxy_read_timeout 1d;
proxy_send_timeout 1d;
fastcgi_connect_timeout 1d;
fastcgi_read_timeout 1d;
fastcgi_send_timeout 1d;
memcached_connect_timeout 1d;
memcached_read_timeout 1d;
memcached_send_timeout 1d;

在所有情况下,我们将时间段设置为一天。因此,使用这些设置可能会严重降低性能。

10. 总结

在本文中,我们讨论了超时和 NGINX 超时设置。总之,虽然NGINX提供了许多选项来更改不同的超时,但更改正确的超时对于优化性能至关重大。

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境
相关推荐
首页
搜索
订单
购物车
我的