SSL Hitch 性能大幅下降

SSL Hitch 性能大幅下降

我正在使用 loader.io 进行测试并发现 varnish 前面的 SSL(终止)服务非常糟糕。

我的数字海洋图形似乎显示磁盘 I/O 最大为 1.21MB/s(这不是太低了吗?我的 M4 SSD 运行速度约为 1.500MB/s,这与 1.5 不一样,对吧?)

loader.io 统计数据每秒 3000 个请求

Cache-Control:  max-age=333s

我已将 Hitch 设置为 SSL 终止,如下所示:

sudo nano /etc/hitch/hitch.conf
# ADD:
## Basic hitch config for use with Varnish and Acmetool

# Listening
frontend = "[*]:443"
ciphers = "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"

# Send traffic to the Varnish backend using the PROXY protocol
backend = "[::1]:6086"
write-proxy-v2 = on

# List of PEM files, each with key, certificates and dhparams
pem-file = "/var/lib/acme/live/website.io/haproxy"
# END ADD

像这样涂上清漆:

sudo nano /etc/varnish/acmetool.vcl
# ADD: 
backend acmetool {
   .host = "127.0.0.1";
   .port = "402";
}

sub vcl_recv {
    if (req.url ~ "^/.well-known/acme-challenge/") {
        set req.backend_hint = acmetool;
        return(pass);
    }
}
# END ADD


# include acmetool settings in default.vcl
cp /dev/null /etc/varnish/default.vcl
sudo nano /etc/varnish/default.vcl
# ADD:
vcl 4.0;
import std;

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

sub vcl_recv {
    if (std.port(local.ip) == 80) {
        set req.http.x-redir = "https://" + req.http.host + req.url;
        return(synth(850, "Moved permanently"));
    }
}
sub vcl_synth {
    if (resp.status == 850) {
        set resp.http.Location = req.http.x-redir;
        set resp.status = 301;
        return (deliver);
    }
}

include "/etc/varnish/acmetool.vcl";
# END ADD

我的设置有什么问题?如何才能提高性能?

答案1

首先,您必须检查 Varnish 是否有效地缓存了输出。使用varnishstat(count hits vs misses),或者更好的方法是使用varnishhist。您应该看到 1e-5 和 1e-4 之间的响应(因此在 0.01 毫秒和 0.1 毫秒之间)。请注意,命中用 表示|,未命中用 表示#

另一个可能的问题是 Hitch,因为我今天遇到了这个问题:syslog被归档为“打开的文件太多”。因此,请查看您的系统日志,看看您是否有同样的问题。要修复它,您需要在文件的部分中systemd添加。LimitNOFILE[Service]hitch.service

答案2

当我们在与 varnish 相同的服务器上运行 SSLTermination 时,我们曾见过此问题。我们最终不得不增加打开的最大文件数的 ulimit,并让 varnish 将缓存项目存储在 RAM 中而不是磁盘上。

当您通过 https 传输大量流量时,Nginx 往往会突破 ulimit。您可能需要对此进行调整,以使其得到适当优化。

相关内容