Atraso de comunicação inicial do NGINX Websocket

1

Eu criei um servidor Django que está fazendo uso de django-channels para comunicação websocket. Quando executo o servidor com o NGINX, há um atraso inicial na comunicação do websocket entre o servidor e o cliente. Após o atraso inicial, todos os dados que faltam chegam em um período de tempo muito curto e, em seguida, ele começa a se comunicar em tempo real.

Eu testei o servidor autônomo e com apenas uma instância Daphne sem o proxy NGINX e não há atraso inicial na comunicação.

Abaixo está minha configuração NGINX. Se alguém tiver alguma ideia do motivo pelo qual eu estaria recebendo um atraso inicial de 10 segundos na comunicação via websocket, seria muito apreciado.

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    map $http_upgrade $connection_upgrade {
      default upgrade;
      '' close;
    }
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  0;

    #gzip  on;
    # the upstream component nginx needs to connect to
  upstream django {
      server 127.0.0.1:8001;
  }
  server {
    listen 80;
    client_max_body_size 20M;
    server_name localhost;

    location / {
            proxy_pass http://django;

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;

            proxy_redirect     off;
            proxy_buffering    off;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;

        }

    }

}

Informações adicionais: ele recebe o mesmo número de mensagens toda vez que as mensagens são enviadas, independentemente de quão rápido as mensagens são colocadas na fila, o que significa que o atraso da mensagem não é baseado em tempo, mas parece estar baseado em estouro de buffer? Como não enviará nenhum dado até que um buffer de algum tipo seja preenchido?

    
por MCBama 18.05.2017 / 19:01

0 respostas