提高Linux上socket性能
发送缓冲区分配的最少字节数.第二个值是默认值(该值会被 wmem_default 覆盖),缓冲区在系统负载不重的情况下可以增长到这个值.第三个值是发送缓冲区空间的最大字节数(该值会被 wmem_max 覆盖).
/proc/sys/net/ipv4/tcp_rmem "4096 87380 174760" 与 tcp_wmem 类似,不过它表示的是为自动调优所使用的接收缓冲区的值. /proc/sys/net/ipv4/tcp_low_latency "0" 允许 TCP/IP 栈适应在高吞吐量情况下低延时的情况;这个选项应该禁用. /proc/sys/net/ipv4/tcp_westwood "0" 启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化;对于 WAN 通信来说应该启用这个选项. /proc/sys/net/ipv4/tcp_bic "1" 为快速长距离网络启用 Binary Increase Congestion;这样可以更好地利用以 GB 速度进行操作的链接;对于 WAN 通信应该启用这个选项. 与任何调优努力一样,最好的方法实际上就是不断进行实验.您的应用程序的行为、处理器的速度以及可用内存的多少都会影响到这些参数影响性能的方 式.在某些情况中,您认为有益的操作可能恰恰是有害的(反之亦然).因此,我们需要逐一试验各个选项,然后检查每个选项的结果.换而言之,我们需要相信自 己的经验,但是对每次修改都要进行验证. 提示:下面介绍一个有关永久性配置的问题.注意,如果您重新启动了 GNU/Linux 系统,那么您所需要的任何可调节的内核参数都会恢复成默认值.为了将您所设置的值作为这些参数的默认值,可以使用 /etc/sysctl.conf 在系统启动时将这些参数配置成您所设置的值. GNU/Linux 工具 GNU/Linux 对我非常有吸引力,这是其中有很多工具可以使用.尽管其中大部分都是命令行工具,但是它们都非常有用,非常直观.GNU/Linux 提供了几个工具 —— 有些是 GNU/Linux 自己提供的,有些是开放源码软件 —— 用于调试网络应用程序,测量带宽/吞吐量,以及检查链接的使用情况. 表 2 列出最有用的几个 GNU/Linux 工具,以及它们的用途.表 3 列出了 GNU/Linux 发行版没有提供的几个有用工具.有关表 3 中工具的更多信息请参阅 参考资料. 拥有帝国一切,皆有可能。欢迎访问phome.net 表 2. 任何 GNU/Linux 发行版中都可以找到的工具 GNU/Linux 工具 用途 ping 这是用于检查主机的可用性的最常用的工具,但是也可以用于识别带宽延时产品计算的 RTT. traceroute 打印某个连接到网络主机所经过的包括一系列路由器和网关的路径(路由),从而确定每个 hop 之间的延时. netstat 确定有关网络子系统、协议和连接的各种统计信息. tcpdump 显示一个或多个连接的协议级的报文跟踪信息;其中还包括时间信息,您可以使用这些信息来研究不同协议服务的报文时间. 表 3. GNU/Linux 发行版中没有提供的有用性能工具 GNU/Linux 工具 用途 netlog 为应用程序提供一些有关网络性能方面的信息. nettimer 为瓶颈链接带宽生成一个度量标准;可以用于协议的自动优化. Ethereal 以一个易于使用的图形化界面提供了 tcpump(报文跟踪)的特性. iperf 测量 TCP 和 UDP 的网络性能;测量最大带宽,并汇报延时和数据报的丢失情况. 结束语 尝试使用本文中介绍的技巧和技术来提高 socket 应用程序的性能,包括通过禁用 Nagle 算法来减少传输延时,通过设置缓冲区的大小来提高 socket 带宽的利用,通过最小化系统调用的个数来降低系统调用的负载,以及使用可调节的内核参数来优化 Linux 的 TCP/IP 栈. 在进行优化时还需要考虑应用程序的特性.例如,您的应用程序是基于 LAN 的还是会通过 Internet 进行通信?如果您的应用程序仅仅会在 LAN 内部进行操作,那么增大 socket 缓冲区的大小可能不会带 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |