CentOS 5内核对TCP的读缓冲区大小有缺省设置,缺省为:net.ipv4.tcp_rmem = 4096 87380 4194304
解决办法就是将最后一个数字改小一点,具体操作就是在文件/etc/sysctl.conf中添加一行:
net.ipv4.tcp_rmem = 4096 87380 174760
然后保存
重新启动网络service network restart,就OK了,如果还是部分网站上不去,可以检查/etc/sysctl.conf文件是否和下面相同
net.ipv4.ip_local_port_range = 1024 65536
net.core.rmem_max=174760
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 174760
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_tw_recycle = 1
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_no_metrics_save=1
net.core.somaxconn = 262144
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_orphans = 8000
net.ipv4.tcp_max_syn_backlog = 8000
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_wmem=4096 65536 16777216 :为自动调优定义每个 socket 使用的内存。第一个值4096是为socket 的发送缓冲区分配的最少字节数。第二个值65536是默认值(该值会被 wmem_default 覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。第三个值16777216是发送缓冲区空间的最大字节数(该值会被wmem_max 覆盖)
net.ipv4.tcp_rmem=4096 87380 174760:与 tcp_wmem 类似,不过它表示的是为自动调优所使用的接收缓冲区的值。
net.core.rmem_max = 25165824 #定义最大的TCP/IP栈的接收窗口大小
net.core.rmem_default = 25165824 #定义默认的TCP/IP栈的接收窗口大小
net.core.wmem_max = 25165824 #定义最大的TCP/IP栈的发送窗口大小
net.core.wmem_default = 65536 #定义默认的TCP/IP栈的发送窗口大小
net.ipv4.tcp_sack =1 #启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);(对于广域网通信来说)这个选项应该启用,但是这会增加对 CPU 的占用。
net.ipv4.tcp_window_scaling = 1 #启用RFC1323定义,支持超过64K窗口
net.ipv4.tcp_fack =1 #启用转发应答(Forward Acknowledgment),这可以进行有选择应答(SACK)从而减少拥塞情况的发生;这个选项也应该启用。
net.ipv4.tcp_mem 24576 32768 49152 确定 TCP 栈应该如何反映内存使用;每个值的单位都是内存页(通常是 4KB)。第一个值是内存使用的下限。第二个值是内存压力模式开始对缓冲区使用应用压力的上限。第三个值是内存上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的 BDP 可以增大这些值(但是要记住,其单位是内存页,而不是字节)。