`
xiaoyu966
  • 浏览: 258167 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nginx大量连接时,出现502错误

阅读更多

问题描述

Nginx的日志出现大量的upstream time out, dmesg 和 /var/log/messages查看系统日志后,发现很多的错误日志:ip_conntrack: table full, dropping packet

 

问题原因

nf_conntrack工作在3层,查看当前连接数的命令如下:

# grep conntrack /proc/slabinfo

nf_conntrack 跟 nat 有关,用来跟踪连接条目,它会使用一个哈希表来记录 established 的记录。nf_conntrack 在 2.6.15 被引入,如果该哈希表满了,就会出现:

nf_conntrack: table full, dropping packet

 

也就是说,这个问题是连接数过多引起的。

 

问题解决

从问题原因我们可以知道是因为连接数过多,nf_conntrack的哈希表满了引起的。

那么,比较简单的解决思路就是增大nf_conntrack_max数值。

 

将以下内容加入到/etc/sysctl.conf 中

 

Centos 6 :

1
2
3
net.nf_conntrack_max = 655360
net.netfilter.nf_conntrack_max = 655350
net.netfilter.nf_conntrack_tcp_timeout_established = 1200

Centos 5

1
2
net.ipv4.netfilter.ip_conntrack_max = 1655350
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1200
 

运行命令: sysctl -p /etc/sysctl.conf 

 

如果出现以下错误:

error: "net.netfilter.nf_conntrack_max" is an unknown key

 运行命令: modprobe nf_conntrack_ipv4

                     modprobe xt_state 

                     modprobe nf_conntrack

备注优化:

                modprobe nfnetlink_queue

                modprobe nfnetlink_log

                 modprobe nfnetlink

 

再次运行: sysctl -p /etc/sysctl.conf 

 

通过命令:sysctl -a | grep nf_conntrack 可以查看相关参数的数值。

 

注: 这里我还加了一行设置:net.ipv4.tcp_max_tw_buckets = 262144  用于解决TCP: time wait bucket table overflow问题,占用大量端口号,使得新连接无法绑定端口。

 

参考文档:

http://www.cnblogs.com/higkoo/articles/iptables_tunning_for_conntrack.html

http://www.d-kai.me/nf_conntrack-table-full-dropping-packet%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/

http://www.php-oa.com/2012/06/07/nginx-502-upstream-timed-out-110-connection-timed-out.html

 

 

 

1
0
分享到:
评论

相关推荐

    [线上问题] “服务端长连接与客户端短连接引起Nginx产生大量\"TIME_WAIT\"状态的线程”的问题分析解决

    本文讨论了在线上环境中,服务端长连接和客户端短连接配置不当导致Nginx服务器产生大量“TIME_WAIT”状态线程的问题,同时提供了问题的分析和解决方法。本文主要涉及的网络编程知识点包括长连接与短连接的定义和区别...

    详解Nginx服务器中配置超时时间的方法

    如果在此时间内无法建立连接,Nginx会返回502 Bad Gateway错误。默认值通常是75秒,但你可以根据实际需求调整。 2. **fastcgi_read_timeout**: 它定义了Nginx等待FastCGI进程返回响应的超时时间。如果超过这个时间...

    nginx1.18 nginx1.18 nginx1.18

    1. **事件驱动架构**:Nginx 使用异步、非阻塞的事件模型,能够同时处理大量的并发连接,这使得它在处理高流量网站时表现出色。 2. **反向代理**:Nginx 可以作为反向代理服务器,将客户端请求转发到后端应用服务器...

    Nginx转发WebSocket接口配置方式

    4. **代理缓冲区**:根据实际需求,可能需要调整Nginx的代理缓冲区大小,以应对大量数据的传输。例如: ```nginx proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; ``` 这些设置...

    Nginx-1.23.2.zip

    1. **事件驱动模型**:Nginx采用异步非阻塞I/O模型,使得它可以高效地处理大量并发连接,特别适合高负载的网络环境。 2. **反向代理**:Nginx可以作为反向代理服务器,将用户的请求转发到后端服务器,从而实现负载...

    nginx arm64版本nginx-linux-arrch64.zip

    - 高并发:Nginx采用事件驱动模型,能够处理大量并发连接,特别适合高流量网站。 - 轻量级:Nginx内存占用少,资源消耗低,提高了服务器效率。 - 反向代理:作为反向代理服务器,Nginx可以将来自客户端的请求转发...

    nginx原码版本0.9.5

    这种架构使得 Nginx 能够高效地处理大量并发连接。 - **主进程**:负责管理工作进程,加载配置文件,接收信号并通知工作进程进行重启或重新加载配置。 - **工作进程**:执行实际的 HTTP 请求处理,每个进程可以处理...

    Linux服务器nginx访问日志里出现大量http 400错误的请求分析

    在Linux服务器上运行Nginx作为Web服务器时,可能会遇到HTTP 400错误的情况,这通常是由于客户端...在日常运维中,定期检查和分析Nginx日志是非常重要的,这有助于及时发现和处理可能出现的错误,确保服务器稳定运行。

    nginx-1.21.6及Nginx依赖的rpm安装包

    1. **Nginx**: Nginx以其事件驱动的架构而著名,能够处理大量的并发连接,常用于高流量网站和API服务。Nginx-1.21.6是Nginx的一个特定版本,包含了已知的性能优化和安全修复。 2. **RPM安装包**: RPM是Red Hat ...

    nginx-1.15.11.tar

    1. **Nginx架构**:Nginx采用事件驱动的异步非阻塞模型,这使得它在处理大量并发连接时表现优秀。其核心模块包括HTTP服务器模块、邮件代理模块和反向代理模块。 2. **安装Nginx-1.15.11**:首先,解压下载的`nginx-...

    nginx linux版本的

    8. **错误处理**:当遇到错误时,Nginx会生成错误日志,例如404表示找不到资源,502表示上游服务器响应错误等。通过错误日志可以快速定位问题。 9. **安全设置**:Nginx可以通过限制IP、设置HTTPS、使用防盗链机制...

    nginx1.2.2亲测可用

    3. **事件驱动模型**:Nginx采用异步非阻塞的事件处理模型,使得它在处理大量并发连接时表现出色,资源利用率高。 4. **模块化设计**:Nginx支持丰富的第三方模块,如HTTP基本认证、URL重写、SSL加密、缓存等功能,...

    nginx1.8.1

    Nginx 的核心优势在于其事件驱动、非阻塞I/O模型,这使得它在处理大量并发连接时表现出色,有效降低了资源消耗,从而提高了服务器的整体性能。Nginx 的轻量级特性使其成为与 PHP-FPM、Tomcat 集群配合的理想选择。 ...

    nginx-release-1.21.4.zip

    这种设计使得Nginx能够高效地处理大量并发连接,且内存占用低。 在运维中,Nginx的角色不仅仅是一个Web服务器,还常被用作反向代理,将用户的请求转发到不同的后端服务,实现负载均衡。例如,当有多个Web应用服务器...

    nginx配置反向代理

    - `http` 部分的配置涉及各种超时时间、缓冲区大小和类型限制,这些都是为了避免在处理请求时出现错误,如 502 和 499。 **4. 解决499错误** 499 错误通常表示客户端在服务器完成响应之前关闭了连接。增加 `...

    nginx源码1.5.7版本

    Nginx采用高效的异步非阻塞I/O模型,通过epoll(Linux)或kqueue(FreeBSD)等系统调用来处理大量并发连接。在Nginx 1.5.7中,这种事件模型使得它在高并发环境下依然能保持低延迟和高吞吐量。 3. **配置文件解析**...

    nginx-1.10.2

    1. **事件驱动模型**:Nginx 使用异步非阻塞的事件模型,如Epoll(Linux)、Kqueue(FreeBSD)等,使得它在处理大量并发请求时表现出色。 2. **多进程/工作进程**:Nginx 通常运行一个主进程和多个工作进程。主进程...

    详解nginx请求头数据读取流程

    3. 错误处理:如果请求头读取过程中出现超时,Nginx会记录日志并关闭请求,返回`NGX_HTTP_REQUEST_TIME_OUT`状态。如果请求头过大,超出允许范围,Nginx会返回`NGX_HTTP_REQUEST_HEADER_TOO_LARGE`,并可能触发持久...

    nginx-0.0.1源代码

    - 这种模型使得 Nginx 可以同时处理大量并发连接,当一个连接处于等待I/O操作时,可以处理其他连接的请求。 2. **模块化架构** - Nginx 的核心是一个事件处理引擎,它通过加载各种模块来扩展功能,如HTTP模块、...

Global site tag (gtag.js) - Google Analytics