NGINX Websocket начальная задержка связи

Я создал сервер Django, который использует django-каналы для связи через веб-сокеты. Когда я запускаю сервер с NGINX, происходит первоначальная задержка соединения веб-сокета между сервером и клиентом. После первоначальной задержки все недостающие данные поступают за очень короткое время, а затем начинают обмениваться данными в режиме реального времени.

Я проверил сервер автономно и только с экземпляром Daphne без прокси NGINX, и не было никакой начальной задержки связи.

Ниже моя конфигурация NGINX. Если у кого-то есть идеи относительно того, почему я получу начальную задержку в 10+ секунд при обмене данными через веб-сокет, это будет с благодарностью.

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;

        }

    }

}

Дополнительная информация: перед отправкой сообщений требуется одинаковое количество сообщений, независимо от того, как быстро они помещаются в очередь. Это означает, что задержка сообщения не зависит от времени, а, похоже, основана на переполнении буфера? Как в нем не будет отправлять какие-либо данные, пока какой-нибудь буфер не будет заполнен?

0 ответов

Другие вопросы по тегам