最初与我的网站的连接时间很长

最初与我的网站的连接时间很长

我使用 Nginx 和 Meteor 搭建了一个网站,运行在 Debian 8 上,我发现初始连接时间非常长。

我怎样才能改善连接时间?

john@vm-170302014546:~$ sudo cat /proc/net/sockstat
sockets: used 237
TCP: inuse 101 orphan 2 tw 48 alloc 107 mem 1023
UDP: inuse 12 mem 6
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0

在此处输入图片描述

nginx ssl 配置参数:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

ssl_dhparam /etc/ssl/certs/dhparam.pem;

答案1

根据您的图像,DNS查找没有问题。

可以看到初始时间包含了SSL时间,几乎占据了大部分时间。

因此我可以自信地说 SSL 协商是原因所在。

为了确认原因,您可以禁用 HTTPS 并在 Nginx 中使用 HTTP。

为了解决这个问题,我们必须优化 SSL 性能。

为了获得许可,请在 Nginx 配置文件中发布您的 SSL 配置块。

我建议以下配置:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

希望它能帮助你。

答案2

您能形容“非常长”吗?

如果您的服务器流量很小(和/或,如果您的应用程序配置为禁止 nginx 缓存某些资产),那么本质上这可能就是“原始”后端性能。

为了填充缓存,nginx 通常会向上游发出请求,拉取完整的响应,然后才会将响应数据发送给发出请求的客户端。如果您的应用在首次连接时移动大量数据,那么延迟就可能是原因所在。

答案3

使用 dig 命令检查你的域名解析过程。如果返回多个答案部分,检查这些 ips 是否有效。

相关内容