网站偶尔超时:ERR_TIMED_OUT,无法通过 nginx 和 EC2 设置通过 ssh 进入实例

网站偶尔超时:ERR_TIMED_OUT,无法通过 nginx 和 EC2 设置通过 ssh 进入实例

我在 EC2 实例上运行一个 django 应用程序,使用 nginx 作为 Web 服务器。网站每分钟会收到相当多的 API 调用,具体取决于我运行的 testpipelines 数量。我的问题是网站偶尔会超时。我无法通过浏览器访问它,当然我的所有测试都会失败。此外,我无法再登录我的实例,而必须等到它恢复正常……即使网站超时,我至少应该能够通过 ssh 进入它吗?

现在我想知道:这是 nginx 配置错误还是我的 EC2 内存不足?我正在部署到 EC2 上的 t2 微型实例,它有 1 个 vCPU,而且只有 1GB 内存。假设我收到 20-30 个 API 调用,所有调用都试图下载 10 到 50 MB 之间的文件。我需要更大的实例吗?还是 EC2 应该可以处理?

或者可能是我的 nginx 配置?现在我用的是这个(我根本不是 nginx 专家,如果设置了愚蠢的配置,请告诉我):

主要配置

user  nginx;
worker_processes auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections 1024;
    use epoll;
    multi_accept on;
}


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" "$http_x_forwarded_for"';

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

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay    on;
    send_timeout       90;
    keepalive_timeout  90;
    fastcgi_read_timeout 120;
    proxy_read_timeout 120;
    fastcgi_buffers 8 128k;
    fastcgi_buffer_size 128k;
    client_body_timeout 120;
    client_body_buffer_size 128K;
    client_header_buffer_size 1k;
    large_client_header_buffers 4 8k;
    client_header_timeout 120;
    client_max_body_size 5G;

    types_hash_max_size 2048;
    server_tokens off;

    gzip  on;
    gzip_static on;
    gzip_min_length 512;


    include /etc/nginx/conf.d/*.conf;
}

以及服务器配置

server {

    listen 443 ssl;
    server_name mywebsite.de;
    proxy_max_temp_file_size 0;
    proxy_buffering off;
    charset utf-8;
    ssl_stapling off;
    ssl_stapling_verify off;

    ssl_certificate            /etc/letsencrypt/live/mywebsite.de/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/mywebsite.de/privkey.pem;


    set $my_host $http_host;
    if ($http_host = "mywebsite.de") {
          set $my_host "mywebsite.de";
    }


    location / {
        proxy_pass http://django:5000;
        proxy_set_header Host $my_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 3600; 
  }

}

server {
        listen 80 ;
        server_name mywebsite.de;
        return 301 https://mywebsite.de$request_uri;
}
server {
        listen 80 ;
        server_name www.mywebsite.de;
        return 301 https://mywebsite.de$request_uri;
}
server {
        listen 443 ;
        server_name www.mywebsite.de;
        return 301 https://mywebsite.de$request_uri;
        ssl_stapling off;
        ssl_stapling_verify off;

        ssl_certificate           /etc/letsencrypt/live/mywebsite.de/fullchain.pem;
        ssl_certificate_key       /etc/letsencrypt/live/mywebsite.de/privkey.pem;
}



也可能是其他原因,但还有什么原因会导致我的机器崩溃?也许是 Redis?我不确定。我正在寻找发生这种情况的可能原因以及可能的解决方案,以使其尽可能稳定。

非常感谢社区提供的任何帮助!提前致谢!

相关内容