美文网首页
关于使用uwsgi中xxx.ini启动python web项目失

关于使用uwsgi中xxx.ini启动python web项目失

作者: 小钟钟同学 | 来源:发表于2018-01-17 17:34 被阅读1052次
    问题来源:

    使用uwsgi启动python web的时候,发现如果我的再配置里面添加相关的一些属性的
    listen = 2048
    的配置的时候,启动的时候总是出错,导致无法启动!


    image.png

    而取消后,才可以正常启动!

    后来百度学习了一下原来根本的原因是:
    net.core.somaxconn=128 限制了我们最大的队列请求数,而我设置已经超过了这个配置

    学习目的:
    参考:
    (1)http://blog.csdn.net/iloveyin/article/details/45894313
    (2)http://blog.csdn.net/linquidx/article/details/5914640
    如果没有设置uwsgi的--listen,按网上说法是使用uwsgi启动的服务,单机最大支持并发数为100*(启动的uwsgi进程数)。
    如果启动:如果启动进程为4个,则最大并发只能支持400!

    1.查询设置情况:
    sysctl -a | grep net.core.somaxconn
    

    net.core.somaxconn=128

    2.修改配置信息:

    nano /etc/sysctl.conf

    原来配置为:
    # sysctl settings are defined through files in
    # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
    #
    # Vendors settings live in /usr/lib/sysctl.d/.
    # To override a whole file, create a new file with the same in
    # /etc/sysctl.d/ and put new settings there. To override
    # only specific settings, add a file with a lexically later
    # name in /etc/sysctl.d/ and put new settings there.
    #
    # For more information, see sysctl.conf(5) and sysctl.d(5).
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    net.ipv6.conf.lo.disable_ipv6 = 1
    
    vm.swappiness = 0
    net.ipv4.neigh.default.gc_stale_time=120
    
    
    # see details in https://help.aliyun.com/knowledge_detail/39428.html
    net.ipv4.conf.all.rp_filter=0
    net.ipv4.conf.default.rp_filter=0
    net.ipv4.conf.default.arp_announce = 2
    net.ipv4.conf.lo.arp_announce=2
    net.ipv4.conf.all.arp_announce=2
    
    
    # see details in https://help.aliyun.com/knowledge_detail/41334.html
    net.ipv4.tcp_max_tw_buckets = 5000
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_max_syn_backlog = 1024
    net.ipv4.tcp_synack_retries = 2
    
    修改后的配置为:
    # sysctl settings are defined through files in
    # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
    #
    # Vendors settings live in /usr/lib/sysctl.d/.
    # To override a whole file, create a new file with the same in
    # /etc/sysctl.d/ and put new settings there. To override
    # only specific settings, add a file with a lexically later
    # name in /etc/sysctl.d/ and put new settings there.
    #
    # For more information, see sysctl.conf(5) and sysctl.d(5).
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    net.ipv6.conf.lo.disable_ipv6 = 1
    
    vm.swappiness = 0
    net.ipv4.neigh.default.gc_stale_time=120
    
    
    # see details in https://help.aliyun.com/knowledge_detail/39428.html
    net.ipv4.conf.all.rp_filter=0
    net.ipv4.conf.default.rp_filter=0
    net.ipv4.conf.default.arp_announce = 2
    net.ipv4.conf.lo.arp_announce=2
    net.ipv4.conf.all.arp_announce=2
    
    net.core.somaxconn = 262144
    
    
    3.然后使用
    sysctl -p #重新load参数设置
    
    4.再次查询对应的设置情况:
    sysctl -a | grep net.core.somaxconn
    

    还是128 !!!
    后来设置为 net.core.somaxconn = 2048 再保存,才可以!

    查询了一下好像不知道这个是不是最大值!(如果有知道的朋友,希望能相互交流一下)

    5. 再重新设置uwsgi.ini配置中的listen = 2048
    6. 再次启动对应的python web服务,可以正常的运行 !

    补充:听说下面是一份完整内核优化的配置

    net.ipv4.ip_forward = 0
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.default.accept_source_route = 0
    kernel.sysrq = 0
    kernel.core_uses_pid = 1
    net.ipv4.tcp_syncookies = 1
    kernel.msgmnb = 65536
    kernel.msgmax = 65536
    kernel.shmmax = 68719476736
    kernel.shmall = 4294967296
    net.ipv4.tcp_max_tw_buckets = 6000
    net.ipv4.tcp_sack = 1
    net.ipv4.tcp_window_scaling = 1
    net.ipv4.tcp_rmem = 4096 87380 4194304
    net.ipv4.tcp_wmem = 4096 16384 4194304
    net.core.wmem_default = 8388608
    net.core.rmem_default = 8388608
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.core.netdev_max_backlog = 262144
    net.core.somaxconn = 262144
    net.ipv4.tcp_max_orphans = 3276800
    net.ipv4.tcp_max_syn_backlog = 262144
    net.ipv4.tcp_timestamps = 0
    net.ipv4.tcp_synack_retries = 1
    net.ipv4.tcp_syn_retries = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_mem = 94500000 915000000 927000000
    net.ipv4.tcp_fin_timeout = 1
    net.ipv4.tcp_keepalive_time = 30
    net.ipv4.ip_local_port_range = 1024 65000
    

    但是上面的:net.core.somaxconn = 262144 我设置了之后 再查出来还是128 无效!不知道啥原因!是不是因为服务器的配置不一样?

    相关文章

      网友评论

          本文标题:关于使用uwsgi中xxx.ini启动python web项目失

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