Nginx花费太长时间,无法使用带有Gunicorn的Django发送网络响应

问题描述 投票:3回答:1

我正在使用Django开发一个Web应用程序,到目前为止一切正常,但是我的服务器响应出现了一个大问题,通常我第一次输入该文件大约需要20到40秒从服务器返回响应。

我正在使用运行Ubuntu 18.04的Linode linux虚拟机,这是一个非常便宜的计划,目前只有一个核心CPU,2GB的ram和50Gb的SSD存储,但是由于我是唯一访问该网站的人,感觉花费这么长时间做出响应是不正确的(每次我重新启动nginx或gunicorn时,或者在一段时间不活动之后,它就会以正常速度开始工作,这种情况就会发生)。

我使用chrome开发工具创造了性能记录,这些是我的结果:

Network result

您可以看到网络请求花费了22秒,如果我检查主线程,我可以看到chrome检测到该时间为空闲时间,而服务器处理视图的实时时间仅为几毫秒。] >

Chrome results

我的服务器也带有SSL证书,nginx的配置如下:

upstream rienpaAdmin {
    server 127.0.0.1:8000 fail_timeout=0;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    ssl on;
    ssl_certificate /correct/path/certificate.crt;
    ssl_certificate_key /correct/path/certificate.key;
    server_name lodugo.com www.lodugo.com;

    client_max_body_size 4G;

    access_log /var/www/rienpaAdmin/nginx-access.log;
    error_log /var/www/rienpaAdmin/nginx-error.log;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /var/www/rienpaAdmin;
    }

    location / {
        include proxy_params;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off; 
        proxy_buffering off;
        proxy_headers_hash_max_size 512;
        proxy_headers_hash_bucket_size 128;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

server {
    listen 80;
    listen [::]:80;

    server_name lodugo.com www.lodugo.com;
    return 301 https://$server_name$request_uri;
}

而且我有一个像这样的枪械服务和插座:

socket:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

服务:

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/rienpaAdmin
ExecStart=/var/www/rienpaAdmin/adminPython/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --threads 1 \
          --bind unix:/run/gunicorn.sock \
          rienpaAdmin.wsgi:application

[Install]
WantedBy=multi-user.target

任何人都可以给我一个很好的解释,为什么会发生这种情况?,我可以升级我的Linode服务器,但是我真的觉得我当前针对一个用户的设置应该像第一个请求后一样快速响应,我已经读了几天其他问题,但是没有一个问题真正帮助我解决了这个问题。

以防万一,我将Django 3.0与postgreSQL数据库一起使用

我正在使用Django开发一个Web应用程序,到目前为止一切似乎还不错,但是我的服务器响应出现了一个大问题,通常我第一次输入它大约需要20到40 ...] >

python django nginx webserver gunicorn
1个回答
0
投票

您知道您的域名有2条A记录吗?

$ dig lodugo.com
...
;; ANSWER SECTION:
lodugo.com.             1308    IN      A       192.64.119.241
lodugo.com.             1308    IN      A       45.56.114.74
© www.soinside.com 2019 - 2024. All rights reserved.