1

Мой экземпляр AWS EC2, работающий на Node, должен передать данные в мой кэш Redis. Это работало хорошо в течение нескольких месяцев. Но за прошедшие несколько дней он сломался.

Все запросы либо истекают через 60 секунд, либо я получаю ошибку 502.

Я добавил дополнительную запись в функцию узла. Это показало, что все это ломается, когда служба пытается поговорить с Redis.

Я перезагрузил узел redis несколько раз, но это не сработало. Я перестраивал стек Cloudformation несколько раз, но это не сработало. я прекратил и создал новые экземпляры EC2 - тот же эффект.

Я проверил следующее:

Группы безопасности проверены: все хорошо
Разрешения IAM проверены: все хорошо
Роли IAM проверены: все хорошо URL конечной точки Redis: правильно
Ключ доступа / секрет проверен: все хорошо

Я посмотрел на логи nginx и нашел немного информации:

2019/01/11 09:24:33 [ошибка] 3826 # 0: * 6732 восходящее преждевременно закрытое соединение при чтении заголовка ответа из восходящего потока, client:, server: my.server.url, запрос: «GET /path /of / запрос HTTP / 1.1 », восходящий потокhttp: //ip.ad.dr.ess: PORT /path /of / request », хост:« my.server.url »

У меня есть два конфига nginx. Родитель выглядит так:

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/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" - $request_time X-Forwarded-For=$http_x_forwarded_for Host=$host';

    log_format KVP 'ip="$remote_addr" time="$time_local" request="$request" '
                    'status_code=$status request_time=$request_time '
                    'host="$http_host" '
                    'body_bytes_sent=$body_bytes_sent referrer="$http_referer" user_agent="$http_user_agent" remote_user="$remote_user"';

    access_log /var/log/nginx/access.log main;
    error_log /var/log/nginx/error.log;

    #sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  300s;

    #gzip  on;

    # Load modular configuration files from the /etc/path/to/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/path/to/*.conf;

    index   index.html index.htm;

}

И следующий включен:

proxy_read_timeout 300s;

limit_req_zone $binary_remote_addr  zone=api:10m rate=10r/s;


# A virtual host using mix of IP-, name-, and port-based configuration
#

upstream NAME_REMOVED {
    server xxx.x.x.x:;
}

server {
    listen       80;

    server_name ;

    real_ip_header X-Forwarded-For;
    # internal addresses in TEST
    set_real_ip_from xx.xxx.0.0/16;
    # internal addresses in PRODUCTION
    set_real_ip_from xx.xxx.0.0/16;

    gzip on;
    gzip_comp_level 6;
    gzip_vary on;
    gzip_min_length  1000;
    gzip_proxied any;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
    gzip_buffers 16 8k;
    client_max_body_size 100M;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_read_timeout 300s;
        proxy_send_timeout 300s;
        proxy_connect_timeout 300s;

        proxy_pass http://app;
        proxy_redirect off;

        limit_req zone=api burst=10;
    }

    location ~ /.git/ {
        deny all;
    }
}

Указанные выше тайм-ауты были добавлены мной, чтобы попытаться решить эту проблему, но не дали желаемого эффекта.

0