Ошибка Nginx "1024 работника-соединения недостаточно" - PullRequest
1 голос
/ 23 июня 2019

Мой сайт работает в Docker Image, используя Nginx с обратным прокси. Сайт работает в течение многих часов в условиях интенсивного трафика, но в конечном итоге он перестает работать и не дает ответа с ошибкой 5 ** тайм-аут. В AWS Elastic Beanstalks Nginx-log я нашел это сообщение об ошибке:

[alert] 18037 # 0: 1024 worker_connections недостаточно

Боюсь, что-то не так с моим собственным Nginx-config, но я не понимаю что это такое. Код из https-redirect-docker-sc.config прилагается.

Я пытался отладить код, чтобы найти утечки или циклы памяти, но я не могу найти никакого решения.

   files:
   "/etc/nginx/sites-available/elasticbeanstalk-nginx-docker-proxy.conf":
   owner: root
   group: root
   mode: "000755"
   content: |
   map $http_upgrade $connection_upgrade {
          default        "upgrade";
          ""            "";
   }

   server {
       listen 80;
       server_name mydomain.no;

       return 301 https://www.mydomain.no$request_uri;
   }   

   server {
       listen 80 default_server;

       gzip on;
       gzip_comp_level 4;
       gzip_types text/html text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

       if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
           set $year $1;
           set $month $2;
           set $day $3;
           set $hour $4;
       }
       access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;

       access_log    /var/log/nginx/access.log;

       location / {
           set $redirect 0;
           if ($http_x_forwarded_proto != "https") {
             set $redirect 1;
           }
           if ($http_user_agent ~* "ELB-HealthChecker") {
             set $redirect 0;
           }
           if ($redirect = 1) {
             return 301 https://$host$request_uri;
           }

           proxy_pass            http://docker;
           proxy_http_version    1.1;

           proxy_set_header    Connection            $connection_upgrade;
           proxy_set_header    Upgrade                $http_upgrade;
           proxy_set_header    Host                $host;
           proxy_set_header    X-Real-IP            $remote_addr;
           proxy_set_header    X-Forwarded-For        $proxy_add_x_forwarded_for;
       }
   }

1 Ответ

0 голосов
/ 23 июня 2019

Значение по умолчанию для Nginx worker_connections - 1024, что недостаточно для вас.

Добавьте блок событий перед http в вашем nginx.conf, чтобы он выглядел следующим образом:

events {
  worker_connections  4096;  ## Default: 1024
}

http {
  include    conf/mime.types;
  .....
}

Вы также можете увеличить количество worker_processes (по умолчанию = 1), поэтому общее количествосоединения, которые может обработать ваш сервер, будут worker_processes * worker_connections

Пожалуйста, проверьте здесь полный пример конфигурации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...