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 可以增大这些值(但是要记住, 其单位是内存页, 而不是字节).
来源: http://www.bubuko.com/infodetail-3108890.html