美文网首页
[高性能网络编程] 所谓调优

[高性能网络编程] 所谓调优

作者: 11bansakana | 来源:发表于2017-04-30 13:26 被阅读0次

    文件句柄数限制###

    两个事实:1)*nix系统中,一切都用文件来描述。2)操作系统会对单个进程打开的最大“文件”数量进行控制。
    结论:你的模型再牛逼,因为这个限制,你也只能打开操作系统规定的那些个连接。

    • 单个进程的限制
      ulimit命令:ulimit -n 在linux返回1024,最多打开1024个文件,修改这个值用ulimit -SHn <number>来做。永久修改
      请加入到.bashrc中。
    • 操作系统范围内总数的限制
      /etc/sysctl.conf
      fs.file-max = 1000000
      net.ipv4.conntrack_max=1000000
      net.ipv4.netfilter.ip_conntrack_max = 1000000
      上述两个值待查阅资料更新

    端口号限制###

    容易混淆的点:accept返回的是文件描述符,而不是端口号,服务器来讲,你accept多少连接,你的客户都跟你bind的那一个端口进行通信,所以服务器能接受的最大连接数(不考虑参数限制),是客户端ip数 × 客户端端口数,也就是2^32 × 2^16 = 2^48,这是服务器理论上能接受的最大连接数,跟你本地支持多少个端口没有关系。

    觉得很有道理的TCP调优###

    • 增大Tcp的初始拥塞窗口:有很多突发性(而且很有可能传输大量数据)的短连接,这是特别重要的一个优化,TCP还在慢启动,数据传输就结束了。

    落地改法:网上介绍的好像只有改内核,并在内核中通过/proc文件系统控制这个值

    • 慢启动重启:连接空闲时,禁用慢启动重启,将会显著改善突发性传送数据的TCP长连接的性能。

    $> sysctl -w net.ipv4.tcp_slow_start_after_idle=0

    • 启动窗口缩放将增大最大接收窗口大小。

    $> sysctl -w net.ipv4.tcp_slow_start_after_idle=0

    • TCP快速打开:允许第一个TCP SYN分组发送应用数据,这需要服务器和客户共同支持。

    https://en.wikipedia.org/wiki/TCP_Fast_Open

    相关文章

      网友评论

          本文标题:[高性能网络编程] 所谓调优

          本文链接:https://www.haomeiwen.com/subject/gzfxtxtx.html