标签: varnish

在 Varnish 前使用 Cherokee 而不是 nginx 来获得 HTTP 1.1 优化?

我们一直在运行 nginx -> uWSGI,现在我们正在评估将 Varnish 作为 nginx 和 uWSGI 之间的缓存层(类似于 http://www.heroku.com/how/architecture)。

但是,nginx 只支持背面的 HTTP 1.0,因此它必须为每个请求创建与 Varnish 的新连接。

许多人建议在 Varnish 之前运行 nginx,但是使用像 Cherokee 这样的东西来消除 HTTP 连接开销不是更有意义,因为它在后面支持 HTTP 1.1?

http nginx cache varnish cherokee

5
推荐指数
1
解决办法
1035
查看次数

为强大的服务器优化 php-fpm 和 varnish

我的设置是 Intel® Core™ i7-2600 和 RAM 16 GB DDR3 RAM

varnish+nginx+php-fpm+apc 用于使用 W3 Total Cache 和 CDN 的不是很重的 WordPress 博客

我的问题是,根据 blitz.io 清漆每秒 55 次点击后开始发出超时。此时的 CPU 使用率几乎不到 1%。可用内存始终保持 10GB+。

我尝试直接对 php-fpm 进行基准测试,结果为 150 次点击/秒,没有任何超时。但在那之后,CPU 使用率达到 100% 并停止响应。

你能帮我优化它以处理更多吗?

据我了解 nginx 在这里没有任何关系,所以我没有包含它的配置。

php-fpm 配置

listen = /tmp/php5-fpm.sock
listen.allowed_clients = 127.0.0.1
user = nginx
group = nginx
pm = dynamic
pm.max_children = 150
pm.start_servers = 7
pm.min_spare_servers = 2
pm.max_spare_servers = 15
pm.max_requests = 500
slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] …
Run Code Online (Sandbox Code Playgroud)

optimization nginx varnish php-fpm high-load

5
推荐指数
1
解决办法
4936
查看次数

带有 Memcache 的 nginx 与 Varnish

我想知道在用于提供内容时是否有人对 Varnish Vs Memcache 有任何评论/基准/建议(通常 2-5kb JS 文件取决于请求中的参数;可能有数千个差异文件)

目前我们正在使用 nginx + Varnish + LAMP 来做到这一点。

我正在阅读 nginx 的 memcached 模块,想知道是否有人在 Memcache 中缓存内容并直接从 nginx 提供服务(或从 LAMP 中提取,以防万一),而不是将请求传递给 Varnish 并让它执行同样的工作。

总体而言,是否有任何关于使用 Memcache Vs Varnish 设置和获取(以及偶尔清除)内容(通常为 2-5kb)的基准

谢谢

nginx varnish memcached memcache

5
推荐指数
1
解决办法
1万
查看次数

在 Varnish/Nginx 服务器上部署我的 node.js 应用程序的最佳方式

我即将部署一个全新的 node.js 应用程序,我需要一些帮助来设置它。

我现在的设置方式如下。

我有清漆运行 external_ip:80

我有 Nginx 在运行 internal_ip:80

两者都在侦听端口 80,一个内部端口,一个外部端口。

注意:node.js 应用程序在WebSockets 上运行

现在我有了我的新 node.js 应用程序,它将侦听端口 8080。

我可以在 nginx 和 node.js 前面设置清漆吗?

Varnish 必须将 websocket 代理到端口 8080,但是诸如 css、js 等静态文件必须通过端口 80 到达 nignx。

Nginx 不支持开箱即用的 websockets,否则我会这样设置:

清漆 -> nignx -> node.js

nginx varnish node.js

5
推荐指数
1
解决办法
8035
查看次数

清漆配置规则来缓存大型 MP3 和 PDF 文件?

我们的网站有许多大型 PDF 和 MP3 文件,我们希望将它们作为静态文件缓存在 Varnish 中。目前我们没有做太多特别的事情 - 只需删除vcl_recvset resetp.ttl = 100w;中的 cookie vcl_fetch

问题似乎是当这些文件之一被请求时(可能是旧浏览器)并且它不在 Varnish 缓存中。Varnish 从后端下载文件时会出现延迟。我的理解是在数据完全加载之前它不会开始交付给客户端。这可能需要 20 秒左右,有时 Adob​​e Acrobat 或 MP3 插件会混淆。

有没有办法既pass将内容直接而下载为下一个匹配的客户端请求,将它保存在缓存中?

varnish streaming

5
推荐指数
1
解决办法
3552
查看次数

如何提高清漆吞吐量?

有时在繁忙的 Pressflow 站点上,我注意到未经身份验证的用户超时,而服务器的端口远未饱和,有大量未使用的内存并且服务器负载非常低。

除此之外,自从我迁移到具有新配置的新 Varnish 服务器后,站点的带宽使用量下降了大约 30%。因此我怀疑下降可能是因为 Varnish 的错误配置。

以下是一些相关参数:

DAEMON_OPTS="-a :80 \
              -T localhost:6082 \
              -b localhost:8080 \
              -u varnish -g varnish \
              -S /etc/varnish/secret \
               -p thread_pools=14 \
               -p thread_pool_min=200  \
               -p thread_pool_max=5000 \
               -p listen_depth=128 \
               -p thread_pool_add_delay=2\
               -p lru_interval=20 \
               -h classic,72227  \
               -p session_linger=120 \
               -p sess_workspace=32768 \
               -p connect_timeout=600 \
               -s malloc,15G"
Run Code Online (Sandbox Code Playgroud)

# 这是 varnishstat 的最新输出:

1+21:07:54 
Hitrate ratio:       10       13       13
Hitrate avg:     0.8405   0.8408   0.8408

    21003013       158.92       129.32 Client connections accepted
    35390015 …
Run Code Online (Sandbox Code Playgroud)

performance varnish

5
推荐指数
1
解决办法
1万
查看次数

清漆无法启动。运行 VCC-compiler 失败,没有编译器错误

编辑:系统磁盘空间不足,因此编译器无法创建文件。varnishd 的输出不会告诉你这一点。

如果您在没有明显原因的情况下出现奇怪的错误,请务必检查您的磁盘配额:)

将在 6 小时后回答我自己。

我正在运行由主管控制的清漆。

清漆运行缓慢,当我使用主管重新启动清漆时没有进行任何更改。

但是重启失败,手动执行后 sbin/varnishd -F -f etc/varnish/ourconfig.vcl -a localhost -p thread_pool_min=10 -p thread_pool_max=50 -s malloc,250M

我收到以下错误

运行 VCC 编译器失败,退出 1

VCL 编译失败

而已。

这是我们的 vcl 文件:

backend default {
    .host = "127.0.0.1";
    .port = "8002";
    .first_byte_timeout = 300s;
}

sub vcl_recv {
     if (req.request == "BAN") {
        ban("obj.http.X-Keywords ~ " + req.http.X-Ban-Keywords);
     }

     if (req.request != "GET" && req.request != "HEAD") {
        return (pass);
     }

     // Remove has_js and Google Analytics __* cookies.
     set …
Run Code Online (Sandbox Code Playgroud)

varnish failed

5
推荐指数
1
解决办法
4292
查看次数

整整 60 秒后清漆 503 错误...如何更改此超时值?

我在 Drupal 站点上通过 Apache 运行 Varnish。我有一个 PHP 脚本,它在我网站的某个路径上执行,需要很长时间……比如 60 - 120 秒。尝试访问该页面时,Varnish 总是在 60 秒后给我 503 大师冥想超时。

我已经尝试将 Varnish connect_timeout 设置为一个非常高的值......我已经尝试将 Apache 的 php.ini 中的所有超时设置为非常高的值......但没有运气:Varnish 在 60 秒后一直给我 503 错误.

所以这是我的问题:这个 60 秒超时值来自哪里?我在这里拔头发...

(仅供参考:如果我从图片中取出 Varnish,Apache 在 60 - 120 秒后按预期提供页面,这让我认为超时必须在 Varnish 一侧的某个地方......)。

php timeout varnish drupal apache-2.2

5
推荐指数
1
解决办法
1万
查看次数

Puppet:如何在包升级期间跳过重启直到配置被替换?

我正在尝试让 Puppet 将我们的 Varnish 3 服务器升级到 Varnish 4,这是一个需要更新配置文件的重大更新,否则它将无法启动。这是在 Ubuntu 12.04 上。

Varnish 模块基本上是用这些类和依赖项构建的:

Class['varnish::repo']
-> Class['varnish::install']
-> Class['varnish::tools']
-> Class['varnish::config']
~> Class['varnish::service']
Run Code Online (Sandbox Code Playgroud)

我已经更新了APT-回购网址varnish::repo,设置ensure=>latestvarnish::install并提供了一个更新的配置文件varnish::config。到现在为止还挺好。

当 Puppet 运行这些依赖项时,运行会在该varnish::install阶段失败,因为 Apt 会在升级 Varnish 守护进程后立即尝试重新启动它,而没有给 Puppet 替换配置文件的机会。类中的失败varnish::install会导致依赖链中断,并导致其余类也失败。结果是损坏的 Varnish 安装需要手动恢复。

你如何处理这个问题?

我考虑过使用policy-rc.d,它本质上是告诉 Apt 不要执行服务的自动停止和启动。我尝试在升级之前创建文件并在升级之后将其删除。

file {'/usr/sbin/policy-rc.d':
    ensure  => $ensure,
    content => "#!/bin/sh\nexit 101",
    owner   => 'root',
    group   => 'root',
    mode    => '0755',
}
Run Code Online (Sandbox Code Playgroud)

当然创建删除是一个问题,因为 Puppet 将其视为重复资源。

你问我为什么要在安装后再次删除该策略?因为我们过去常常unattended-upgrades执行较小的安全升级,而我希望在这些情况下允许 …

ubuntu varnish puppet apt

5
推荐指数
1
解决办法
497
查看次数

如何基于Varnish中的主机+路径进行散列?

我想使用Varnish 中的hash Director没有查询参数的同一 URL 的所有请求重定向到同一服务器:

例如,

http://example.com/foo/bar?a=1
http://example.com/foo/bar?a=2&b=3
Run Code Online (Sandbox Code Playgroud)

应该散列到同一台服务器。我只想在主机路径上散列。

这是我的配置:

sub vcl_init {
    new workers = directors.hash();

    workers.add_backend(worker_1, 1);
    workers.add_backend(worker_2, 1);
    workers.add_backend(worker_3, 1);
}
Run Code Online (Sandbox Code Playgroud)

我知道我需要在这里设置哈希函数:

sub vcl_recv {
    set req.backend_hint = workers.backend(...);
}
Run Code Online (Sandbox Code Playgroud)

在没有查询字符串的情况下,我应该在主机 + 路径上放什么来散列?

varnish

5
推荐指数
1
解决办法
1969
查看次数