Varnish / Nginx:闲置约5秒后的初始连接

时间:2017-03-30 11:31:47

标签: nginx varnish

我已经在http://95.85.19.39/上设置了一个测试服务器,在Ubuntu 14.04上运行了varnish 4.1.5(端口80)和nginx 1.4.6(端口8080)。我使用的是Chrome 57.0.2987.110(64位)。

Varnish正在缓存页面,但当你等待5秒以上并点击刷新时,你会看到一个初始连接,为什么会这样?当您在5秒内点击刷新时,将不会有初始连接。

如果我删除了清漆并在Nginx上运行服务器,那么我将不再获得初始连接,所以我认为我的清漆有问题。

有谁知道为什么会这样,我将如何解决这个问题呢?

没有初始连接

Connection Header

初始连接

Connection Header

nginx.conf

for (Key ki : this.keyboard.getKeys()) {
            switch (Integer.parseInt(String.valueOf(ki.codes[0]))) {
                case Utils.SHIFT_CODE:
                     ki.icon = this.shiftOffDrawable;
                     break;
                 case Utils.KEYCODE_NUMBERS1:
                     ki.label = ki.label;
                     break;
                 case Utils.KEYCODE_NUMBERS:
                     ki.label = ki.label;
                     break;
                 case Utils.KEYCODE_ALPHABETS:
                     ki.label = ki.label;
                     break;
                 case -5:
                     ki.icon = deleteDrawable;
                     ki.repeatable = true;
                     break;
                 case -4:
                     ki.icon = enterDrawable;
                     break;
                 case ValueAnimator.INFINITE:
                     ki.icon = shiftOffDrawable;
                     break;
                 case 32:
                     ki.icon = spaceDrawable;
                     break;
                 default:
                     break;
             }
         }

default.conf

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
    worker_connections 768;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    gzip on;
    gzip_disable "msie6";

    include /etc/nginx/sites-enabled/default.conf;
}

default.vcl

server {
    listen 8080;

    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php;
    }

    location ~ \.(htaccess|htpasswd|ini|phps|fla|log|sh)$ {
        deny all;
    }
}

的/ etc /默认/清漆

vcl 4.0;

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

sub vcl_recv {
}

sub vcl_backend_response {
}

sub vcl_deliver {
     if (obj.hits > 0) {
         set resp.http.X-Cache = "HIT";
     } else {
         set resp.http.X-Cache = "MISS";
     }
}

1 个答案:

答案 0 :(得分:1)

你观察到的是正常的。 Varnish 4中的默认保持活动值为5秒。

第一个请求涉及额外的TCP开销。如果第二个请求在5秒内发生,则通过现有的TCP连接执行,并且没有"初始连接"将会节省一些时间。

如果您希望keepalive超时超过5秒,则可以增加Varnish客户端超时。

DAEMON_OPTS="-a :80 \
        -T localhost:6082 \
        -f /etc/varnish/default.vcl \
        -S /etc/varnish/secret \
        -s malloc,256m" \
        -p timeout_idle=75 

更多关于Keep-Alive in web servers (Varnish, Nginx, Apache)