清漆:性能无差异

清漆:性能无差异

我在我的 centos 服务器上安装了 varnish,但是性能并没有提高,安装前我的网站加载需要 7 秒,安装后仍然需要 7 秒,
这是什么问题?

sub vcl_recv {

    remove req.http.X-Forwarded-For;
    set req.http.X-Forwarded-For = client.ip;

    if(req.http.cookie ~ "userID" || req.url ~ "^/administrator" || req.url ~ "^/component/banners" || req.request == "POST") {
        return (pass);
    }

    if(req.http.x-logged-in == "False" && req.request != "POST"){
        unset req.http.cookie;
    }

    if (req.http.Accept-Encoding) {
      if (req.url ~ "\.(jpg|jpeg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|swf)$") {
        remove req.http.Accept-Encoding;
      } elsif (req.http.Accept-Encoding ~ "gzip") {
        set req.http.Accept-Encoding = "gzip";
      } elsif (req.http.Accept-Encoding ~ "deflate") {
        set req.http.Accept-Encoding = "deflate";
      } else {
        remove req.http.Accept-Encoding;
      }
    }

    if (req.url ~ "\.(js|css|jpg|jpeg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|swf)$") {
        return (lookup);
    }

    if (req.backend.healthy) {
        set req.grace = 5m;
    } else {
        set req.grace = 1h;
    }

    return (lookup);
}

sub vcl_fetch {

    if(req.request != "POST" && beresp.http.x-logged-in == "False") {
        unset beresp.http.Set-Cookie;
    }

    set beresp.grace = 1h;

    if (beresp.status == 503 || beresp.status == 502 || beresp.status == 501 || beresp.status == 500) {
      set beresp.grace = 60s;
      return (restart);
    }

    unset beresp.http.etag;

    if(beresp.http.Cache-Control == "no-cache" || beresp.http.Cache-Control == ""){
        set beresp.http.Cache-Control = "max-age=300, public, must-revalidate";
    }

    set beresp.ttl = 5m;

    return (deliver);
}

NFILES=131072
MEMLOCK=82000
NPROCS="unlimited"
RELOAD_VCL=1
VARNISH_VCL_CONF=/etc/varnish/default.vcl
VARNISH_LISTEN_PORT=80
VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1
VARNISH_ADMIN_LISTEN_PORT=6082
VARNISH_SECRET_FILE=/etc/varnish/secret
VARNISH_MIN_THREADS=50
VARNISH_MAX_THREADS=1000
VARNISH_THREAD_TIMEOUT=120
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
VARNISH_STORAGE_SIZE=1G
VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
VARNISH_TTL=120
DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \
             -f ${VARNISH_VCL_CONF} \
             -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \
             -t ${VARNISH_TTL} \
             -w ${VARNISH_MIN_THREADS},${VARNISH_MAX_THREADS},${VARNISH_THREAD_TIMEOUT} \
             -u varnish -g varnish \
             -S ${VARNISH_SECRET_FILE} \
             -s ${VARNISH_STORAGE}"

答案1

您的网页是否使用了指示可缓存内容的标头?

https://stackoverflow.com/questions/9836281/http-headers-influencing-caching-tutorial-documentation#9836997

如果标头中的缓存指令不允许缓存页面,则 vanish 每次都会从您的 Web 服务器获取它们,因此 Web 服务器延迟仍然存在。

有些页面总是需要从缓存中获取。如果这些页面需要 7 秒才能创建,则仍然有问题。

编辑:

我怀疑你的 Web 应用不支持缓存,但你的问题中没有提供相关信息。我甚至不知道你是否已成功通过 varnish 转移请求。

如果没有太多其他流量,那么也许可以使用 tcpdump 捕获一些流量以归档,包括对 varnish 的请求和 varnish 对 Web 服务器的请求以及响应,然后使用类似 wireshark 的工具查看所有请求和响应标头。也许您还可以从 varnish 获取一些日志数据,这些数据可能可以确认哪些是缓存命中,哪些不是。

根据需要阅读有关 http 标头的教程,以了解标头的作用,然后如果仍然不清楚为什么 varnish 没有缓存您认为应该缓存的内容,请提出更具体的问题。

相关内容