• 高并发有关的内核参数


    业务起来了,并发上来了,高峰时期也达到1.6wrps了,长连接数量达到了5w,为了生存,才研究如何提高并发。

    1. net.core.netdev_max_backlog

    net.core.netdev_max_backlog参数表示网卡接受数据包的队列最大长度,在阿里云服务器上,默认值是1000,可以适当调整。

    2. net.core.somaxconn

    net.core.somaxconn参数决定了端口监听队列的最大长度,存放的是已经处于ESTABLISHED而没有被用户程序(nginx)接管的TCP连接,默认是128,对于高并发的,或者瞬发大量连接,必须调高该值,否则会直接丢弃连接。

    3. net.ipv4.tcp_max_orphans

    net.ipv4.tcp_max_orphans参数决定孤立连接的最大数量。阿里云服务器默认16384,个人感觉没啥鸟用。

    4. net.ipv4.tcp_max_syn_backlog

    net.ipv4.tcp_max_syn_backlog参数决定已经收到syn包,但是还没有来得及确认的连接队列,这是传输层的队列,在高并发的情况下,必须调整该值,提高承载能力。

    5. net.ipv4.tcp_synack_retries

    net.ipv4.tcp_synack_retries参数决定了发送SYN+ACK确认包重试的次数(数量),默认是5,可以调整为2或者3,使其快速失败。

    6. net.ipv4.tcp_syn_retries

    net.ipv4.tcp_syn_retries参数,作为客户端,主动建立连接时发送syn包重试的次数,默认6次,可以调整为2次或者三次,快速失败。

    7. net.ipv4.tcp_abort_on_overflow

    net.ipv4.tcp_abort_on_overflow参数,当TCP连接已经建立,并塞到程序监听backlog队列时,如果检测到backlog队列已经满员后,TCP连接状态会回退到SYN+ACK状态,假装TCP三次握手第三次客户单的ACK包没收到,让客户端重传ACK,以便快速进入ESTABLISHED状态。如果设置了net.ipv4.tcp_abort_on_overflow 参数,那么在检测到监听backlog 队列已满时,直接发 RST 包给客户端终止此连接,此时客户端程序会收到104 Connection reset by peer错误。这个参数很暴力,慎用。参考这里

    8. net.ipv4.tcp_syncookies

    net.ipv4.tcp_syncookies参数,在TCP三次握手过程中,当服务端收到最初的SYN请求时,会检查应用程序的syn_backlog队列是否已满。若已满,通常行为是丢弃此SYN包。若未满,会再检查应用程序的监听backlog队列是否已满。若已满并且系统根据历史记录判断该应用程序不会较快消耗连接时,则丢弃此 SYN 包。如果启用tcp_syncookies则在检查到syn_backlog队列已满时,不丢弃该SYN包,而改用syncookie技术进行三次握手。参考这里

    9. net.ipv4.ip_local_port_range

    net.ipv4.ip_local_port_range参数决定了作为客户端,发起连接时可用的端口范围,对于nginx来说,后抛请求是就是客户端行为,所以高并发场景下也有一定的必要。

    10. net.ipv4.tcp_tw_reuse

    net.ipv4.tcp_tw_reuse参数可以重用TIME_WAIT状态的连接,仅需要1秒就可以重用。此参数针对TIME_WAIT,与是否为客户端无关。

    11. net.core.rmem_max

    12. net.core.wmem_max

    13. net.ipv4.tcp_rmem

    14. net.ipv4.tcp_wmem

    以上4个参数决定了socket buffer大小,默认是几百KB,可以调大

    附录

    推荐文章,待翻译。

  • 相关阅读:
    油管上有多乱!!!这就是美国所谓的“言论自由”
    Gitee官网大规模封禁开源项目,如想解禁则需手动提交审核,在此过程中一些项目的信息也被gitee官方修改!!!
    再探 游戏 《 2048 》 —— AI方法—— 缘起、缘灭(1) —— Firefox浏览器下自动运行游戏篇 (续)
    ubuntu环境下boost库的安装——Could NOT find Boost (missing: Boost_INCLUDE_DIR program_options) (Required is at least version "1.49.0")
    【转载】 Makefile的静态模式%.o : %.c
    任意界面调出微信的快捷键
    windows cmd切换目录
    w10 本地邮箱同步163,出现可能需要更新密码或授予账户同步到此设备的权限
    yaml有没有多行注释的方法
    笔记本电脑选购显示器
  • 原文地址:https://www.cnblogs.com/ermazi/p/7843644.html
Copyright © 2020-2023  润新知