Мой экземпляр 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 / путь / из / запрос HTTP / 1.1», восходящий поток: «http://ip.ad.dr.ess:PORT/path/of/request”, хост:« my.server.url »
У меня есть два конфига nginx. Родитель выглядит так:
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_port %>;
}
server {
listen 80;
server_name <%= @server_url %>;
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;
}
}
Указанные выше тайм-ауты были добавлены мной, чтобы попытаться исправить эту проблему, но не дали желаемого эффекта.
Я также пытался это и , что , но ни один из них не решил проблему