我有一个小型服务器场(HP Proliant和IBM x,Broadcom公司的NetXtreme II BCM5 NIC)在CentOS 6上运行Apache 2.2.15,位于Cisco ACE负载均衡器的后面,服务于一个基于PHP / JS的门户网站。 这个农场每天收到大量的请求(它服务于一个小国家)试图访问一个启动页面(从那里,到索引页面)
我一直在努力解决以下问题:
我注意到,有些时候Web请求会延迟很长的时间(从客户端的angular度来看),有时甚至根本不应答(Web客户端的超时)。 在后者中,我甚至没有看到Apache日志上的请求。
我也注意到,netstat报告越来越多的TCP重置被发送( netstat -st | grep 'resets sent' )
此外, dropwatch -l kas显示有很多数据包被丢弃:
启动kallsyms db dropwatch> start启用监视…激活内核监视。 在tcp_v4_md5_hash_skb + 248(0xffffffff81471b11)下降56次(0xffffffff81471b11)在tcp_v4_md5_hash_skb上下降56次(0xffffffff81471b11)在tcp_v4_md5_hash_skb上丢弃56次(0xffffffff81471b11)在tcp_v4_md5_hash_skb上丢弃56次(0xffffffff81471b11) 0xffffffff8149fa08)在tcp_rcv_established + 926(0xffffffff814981b6 29滴)在tcp_v4_reqsk_destructor + FA(0xffffffff814a104a 4滴)51滴在tcp_v4_md5_hash_skb + 248(0xffffffff8149fa08)在tcp_rcv_established + 926(0xffffffff814981b6 32滴)在tcp_v4_reqsk_destructor + FA(0xffffffff814a104a 2滴)1滴,在ip_rcv_finish + 199(0xffffffff8147ea49)1滴,在tcp_v4_destroy_sock + 115(0xffffffff814a0cf5)在tcp_v4_reqsk_destructor + FA(0xffffffff814a104a)1滴,在tcp_rcv_established + 926(0xffffffff814981b6)22滴在tcp_v4_md5_hash_skb 36滴+ 248(0xffffffff8149fa08)2滴在tcp_v4_reqsk_destructor + FA(0xffffffff814a104a )在tcp_v4_md5_hash_skb + 248(0xffffffff8149fa08)29下降49 在tcp_rcv_established + 926(0xffffffff814981b6)处下降26在tcp_rcv_established处下降2626(0xffffffff814981b6)
我一直听从RH( 红帽企业Linuxnetworking性能调整指南 )的build议,即使我没有看到我的服务器中描述的一些症状。 简而言之:
以上所有都没有运气。
所有网卡的速度:1000Mb / s,CPU和磁盘使用率都很低, netstat和ethtool都不显示错误。
任何想法还有什么可以做的?
TCP重置是TCP连接的即时closures。 这允许为上一个连接分配的资源被释放并提供给系统。
RST代的原因
确认,重置
发送回应一个Syn。 为了响应Syn帧发送的Ack Reset被发送以确认接收到帧,但是接着让客户知道服务器不能允许该端口上的连接。 在确认的原因中,重置是:
一个。 正在连接的节点不侦听客户端节点试图连接的端口。
湾 有一些原因,服务器节点无法完成该端口上的连接。 例如,服务器资源不足,因此无法分配所需的资源以允许连接。
RST
如果连接处于任何非同步状态(LISTEN,SYN-SENT,SYN-RECEIVED),并且传入段确认尚未发送的内容(段带有不可接受的ACK),则发送复位。
下一次重置是在networking帧发送六次(这将是原始帧加上帧的五次重传)时发生的TCP重置,没有响应。 结果,发送节点重置连接。
和你一样,尝试使用各种内核调整参数,尝试使用内核的tcp cookies选项
启用TCP SYN cookie保护
Edit the file /etc/sysctl.conf, run: # vi /etc/sysctl.conf Append the following entry: net.ipv4.tcp_syncookies = 1 Save and close the file. To reload the change, type: # sysctl -p
解决scheme只能通过分析您的日志,IPtables也可以帮助