快速业务通道

提高Linux上socket性能

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-26
KB 的窗口(使用 16 位的值来定义窗口的大小).采用 window scaling(RFC 1323)扩展之后,您就可以使用 32 位的值来表示窗口的大小了.GNU/Linux 中提供的 TCP/IP 栈可以支持这个选项(以及其他一些选项).

  提示:Linux 内核还包括了自动对这些 socket 缓冲区进行优化的能力(请参阅下面 表 1 中的 tcp_rmem 和 tcp_wmem),不过这些选项会对整个栈造成影响.如果您只需要为一个连接或一类连接调节窗口的大小,那么这种机制也许不能满足您的需要了.

  技巧 4. 动态优化 GNU/Linux TCP/IP 栈

  标准的 GNU/Linux 发行版试图对各种部署情况都进行优化.这意味着标准的发行版可能并没有对您的环境进行特殊的优化.

  解决方案

  GNU/Linux 提供了很多可调节的内核参数,您可以使用这些参数为您自己的用途对操作系统进行动态配置.下面我们来了解一下影响 socket 性能的一些更重要的选项.

  在 /proc 虚拟文件系统中存在一些可调节的内核参数.这个文件系统中的每个文件都表示一个或多个参数,它们可以通过 cat 工具进行读取,或使用 echo 命令进行修改.清单 3 展示了如何查询或启用一个可调节的参数(在这种情况中,可以在 TCP/IP 栈中启用 IP 转发).

  清单 3. 调优:在 TCP/IP 栈中启用 IP 转发 拥有帝国一切,皆有可能。欢迎访问phome.net

  [root@camus]# cat /proc/sys/net/ipv4/ip_forward

  0

  [root@camus]# echo "1" > /poc/sys/net/ipv4/ip_forward

  [root@camus]# cat /proc/sys/net/ipv4/ip_forward

  1

  [root@camus]#

  表 1 给出了几个可调节的参数,它们可以帮助您提高 Linux TCP/IP 栈的性能.

  表 1. TCP/IP 栈性能使用的可调节内核参数 可调节的参数 默认值 选项说明

  /proc/sys/net/core/rmem_default "110592" 定义默认的接收窗口大小;对于更大的 BDP 来说,这个大小也应该更大.

  /proc/sys/net/core/rmem_max "110592" 定义接收窗口的最大大小;对于更大的 BDP 来说,这个大小也应该更大.

  /proc/sys/net/core/wmem_default "110592" 定义默认的发送窗口大小;对于更大的 BDP 来说,这个大小也应该更大.

  /proc/sys/net/core/wmem_max "110592" 定义发送窗口的最大大小;对于更大的 BDP 来说,这个大小也应该更大.

  /proc/sys/net/ipv4/tcp_window_scaling "1" 启用 RFC 1323 定义的 window scaling;要支持超过 64KB 的窗口,启用该值.

  /proc/sys/net/ipv4/tcp_sack "1" 启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);(对于广域网通信来说)这 个选项应该启用,但是这会增加对 CPU 的占用.

  /proc/sys/net/ipv4/tcp_fack "1" 启用转发应答(Forward Acknowledgment),这可以进行有选择应答(SACK)从而减少拥塞情况的发生;这个选项也应该启用.

  /proc/sys/net/ipv4/tcp_timestamps "1" 以一种比重发超时更精确的方法(请参阅 RFC 1323)来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项.

  /proc/sys/net/ipv4/tcp_mem "24576 32768 49152" 确定 TCP 栈应该如何反映内存使用;每个值的单位都是内存页(通常是 4KB).第一个值是内存使用的下限.第二个值是内存压力模式开始对缓冲区使用应用压力的上限.第三个值是内存上限.在这个层次上可以将报文丢弃,从而减 少对内存的使用.对于较大的 BDP 可以增大这些值(但是要记住,其单位是内存页,而不是字节). 拥有帝国一切,皆有可能。欢迎访问phome.net

  /proc/sys/net/ipv4/tcp_wmem "4096 16384 131072" 为自动调优定义每个 socket 使用的内存.第一个值是为 socket 的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号