问题描述
Nginx的日志出现大量的upstream time out, dmesg 和 /var/log/messages查看系统日志后,发现很多的错误日志:ip_conntrack: table full, dropping packet
问题原因
nf_conntrack工作在3层,查看当前连接数的命令如下:
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
如果出现以下错误:
运行命令: 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
相关推荐
本文讨论了在线上环境中,服务端长连接和客户端短连接配置不当导致Nginx服务器产生大量“TIME_WAIT”状态线程的问题,同时提供了问题的分析和解决方法。本文主要涉及的网络编程知识点包括长连接与短连接的定义和区别...
如果在此时间内无法建立连接,Nginx会返回502 Bad Gateway错误。默认值通常是75秒,但你可以根据实际需求调整。 2. **fastcgi_read_timeout**: 它定义了Nginx等待FastCGI进程返回响应的超时时间。如果超过这个时间...
1. **事件驱动架构**:Nginx 使用异步、非阻塞的事件模型,能够同时处理大量的并发连接,这使得它在处理高流量网站时表现出色。 2. **反向代理**:Nginx 可以作为反向代理服务器,将客户端请求转发到后端应用服务器...
4. **代理缓冲区**:根据实际需求,可能需要调整Nginx的代理缓冲区大小,以应对大量数据的传输。例如: ```nginx proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; ``` 这些设置...
1. **事件驱动模型**:Nginx采用异步非阻塞I/O模型,使得它可以高效地处理大量并发连接,特别适合高负载的网络环境。 2. **反向代理**:Nginx可以作为反向代理服务器,将用户的请求转发到后端服务器,从而实现负载...
- 高并发:Nginx采用事件驱动模型,能够处理大量并发连接,特别适合高流量网站。 - 轻量级:Nginx内存占用少,资源消耗低,提高了服务器效率。 - 反向代理:作为反向代理服务器,Nginx可以将来自客户端的请求转发...
这种架构使得 Nginx 能够高效地处理大量并发连接。 - **主进程**:负责管理工作进程,加载配置文件,接收信号并通知工作进程进行重启或重新加载配置。 - **工作进程**:执行实际的 HTTP 请求处理,每个进程可以处理...
在Linux服务器上运行Nginx作为Web服务器时,可能会遇到HTTP 400错误的情况,这通常是由于客户端...在日常运维中,定期检查和分析Nginx日志是非常重要的,这有助于及时发现和处理可能出现的错误,确保服务器稳定运行。
1. **Nginx**: Nginx以其事件驱动的架构而著名,能够处理大量的并发连接,常用于高流量网站和API服务。Nginx-1.21.6是Nginx的一个特定版本,包含了已知的性能优化和安全修复。 2. **RPM安装包**: RPM是Red Hat ...
1. **Nginx架构**:Nginx采用事件驱动的异步非阻塞模型,这使得它在处理大量并发连接时表现优秀。其核心模块包括HTTP服务器模块、邮件代理模块和反向代理模块。 2. **安装Nginx-1.15.11**:首先,解压下载的`nginx-...
8. **错误处理**:当遇到错误时,Nginx会生成错误日志,例如404表示找不到资源,502表示上游服务器响应错误等。通过错误日志可以快速定位问题。 9. **安全设置**:Nginx可以通过限制IP、设置HTTPS、使用防盗链机制...
3. **事件驱动模型**:Nginx采用异步非阻塞的事件处理模型,使得它在处理大量并发连接时表现出色,资源利用率高。 4. **模块化设计**:Nginx支持丰富的第三方模块,如HTTP基本认证、URL重写、SSL加密、缓存等功能,...
Nginx 的核心优势在于其事件驱动、非阻塞I/O模型,这使得它在处理大量并发连接时表现出色,有效降低了资源消耗,从而提高了服务器的整体性能。Nginx 的轻量级特性使其成为与 PHP-FPM、Tomcat 集群配合的理想选择。 ...
这种设计使得Nginx能够高效地处理大量并发连接,且内存占用低。 在运维中,Nginx的角色不仅仅是一个Web服务器,还常被用作反向代理,将用户的请求转发到不同的后端服务,实现负载均衡。例如,当有多个Web应用服务器...
- `http` 部分的配置涉及各种超时时间、缓冲区大小和类型限制,这些都是为了避免在处理请求时出现错误,如 502 和 499。 **4. 解决499错误** 499 错误通常表示客户端在服务器完成响应之前关闭了连接。增加 `...
Nginx采用高效的异步非阻塞I/O模型,通过epoll(Linux)或kqueue(FreeBSD)等系统调用来处理大量并发连接。在Nginx 1.5.7中,这种事件模型使得它在高并发环境下依然能保持低延迟和高吞吐量。 3. **配置文件解析**...
1. **事件驱动模型**:Nginx 使用异步非阻塞的事件模型,如Epoll(Linux)、Kqueue(FreeBSD)等,使得它在处理大量并发请求时表现出色。 2. **多进程/工作进程**:Nginx 通常运行一个主进程和多个工作进程。主进程...
3. 错误处理:如果请求头读取过程中出现超时,Nginx会记录日志并关闭请求,返回`NGX_HTTP_REQUEST_TIME_OUT`状态。如果请求头过大,超出允许范围,Nginx会返回`NGX_HTTP_REQUEST_HEADER_TOO_LARGE`,并可能触发持久...
- 这种模型使得 Nginx 可以同时处理大量并发连接,当一个连接处于等待I/O操作时,可以处理其他连接的请求。 2. **模块化架构** - Nginx 的核心是一个事件处理引擎,它通过加载各种模块来扩展功能,如HTTP模块、...