• uwsgi支持http长链接


    http1.1支持长链接,而http1.0不支持,所以,在切换http版本号或者升级服务端版本时候,尤其要注意这个造成的影响。

    当客户端以http1.1长链接方式连接服务端时,服务端如果不支持1.1,客户端会进行协议降级,用1.0通信,即使用短连接,此时服务端可以正常提供服务;

    一旦服务端http版本由于某种原因切换到1.1,则长链接就会生效,如果服务端不支持长链接,则就会造成频繁的502发生;

    因为,短连接在服务端return后就会向客户端发一个reset消息,客户端就会切断链路,如果客户端认为是长链接,就会复用该通道,此时reset,会造成内核态的数据被清空,造成数据丢失,表现为502;

    如果发现http1.0正常,1.1会经常出现502,则可以考虑此种可能。

    附一个检测长链接的脚本:

    def query():
        i = 2000
        conn = httplib2.HTTPConnectionWithTimeout("*.*.*.*", port, timeout=60)
        while i > 0:
            headers = {
                'content-type': 'application/json',
                'accept': 'application/json',
                'Connection': 'Keep-Alive',
            }
            conn.request('GET', '***', headers=headers)
            response = conn.getresponse()
            resp_status = str(response.status)
            rsp = response.read()
            print rsp
            status_ok_list = [HTTP_200_OK, HTTP_201_CREATED, HTTP_204_NO_CONTENT, HTTP_202_ACCEPTED]
            if resp_status not in status_ok_list:
                print 'get error rsp, resp_status is %s' % resp_status
            i -= 1

    django1.11之前,不支持http 1.1,因为不会自动添加Content_Length,但1.1后会,所以,1.1后是可以支持1.1的,一般情况下,我们配置uwsgi是采用短连接的方式,即,http_socket = :8000或socket = 0.0.0.0:8000,protocol = http;此种配置不支持长链接,如要支持长链接,需要使用http11_soscket = :8000,http-keepalive = true,具体配置如下:

    [uwsgi]
    http11-socket = :8000
    http-keepalive = true
    master = true
    hara-kiri = 180
    chdir = /home/test_server
    manage-script-name = true
    mount = /client=/home/test_server/test/wsgi.py
    processes = 4
    threads = 40
    pidfile = /usr/local/bin/uwsgi.pid
    daemonize = /home/test_server/logs/uwsgi.log
    buffer-size = 32768
    listen = 1024
    reload-on-rss = 1024
    cheaper = 2
    cheaper-initial = 2
    die-on-term = true
    py-tracebacker = /tmp/tbsocket.
    log-maxsize = 50000000
  • 相关阅读:
    reids数据结构(四) ziplist
    redis 持久化机制
    redis数据结构(五) quik list
    redis数据结构(六) listpack
    python 聪明的尼姆游戏
    330 说一下Vue的$nextTick原理?
    330 为什么要使用 vue3, vue3 带来了什么好处?
    331 两数之和简单
    41 说一下Vue单页与多页的区别?
    42 怎样理解 Vue 的单向数据流?
  • 原文地址:https://www.cnblogs.com/small-office/p/10100622.html
Copyright © 2020-2023  润新知