标签: cache

Squid 或其他带有 SSD 缓存存储的 HTTP 缓存?

我正在考虑在带有 SSD 驱动器的系统上设置鱿鱼(或可能是清漆)缓存。

明显的好处是这些系统具有很高的读取速度,我希望我的命中率相当高。

假设我可以将 7 个 SSD 放入 RAID 配置中。(有些情况可以让我打包更多)

实施问题:

  • 我应该使用RAID0吗?(我希望驱动器最终会失败,所以这看起来很危险。)

  • 我应该使用RAID10吗?(这将我的磁盘占用空间减半,这很昂贵。)

  • 我应该使用RAID5吗?(众所周知,SSD 具有“糟糕”的写入性能和写入限制,所有额外的奇偶校验写入可能会大大减慢这一速度。)

  • 我应该将每个磁盘视为自己的鱿鱼数据存储吗?(squid 处理多个数据存储的效果如何?如果/当一个失败时会发生什么?)

  • 我是否应该忽略数据存储而只是将 SSD 放入大型 SWAP 分区并让 linux VM 来做这件事?(看起来很草率)

在生产环境中使用 SSD 的人们的任何建议将不胜感激。(特别是如果您将它们用于 HTTP 缓存)

raid http ssd cache squid

9
推荐指数
1
解决办法
6334
查看次数

如何在不重新启动 Web 服务器的情况下刷新 IIS 缓存?

我有一个将数据放入缓存的网站 IIS 6.0。遗憾的是,它没有设置过期时间。有没有办法(实用程序或命令)在不重新启动机器或重新启动 Web 服务器的情况下强制清除此缓存?

我已经尝试重新启动应用程序池但没有成功。

iis-6 cache

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

如何设置 Apache 2.2.3 以发送“上次修改”等

并告诉浏览器重新加载对象(和/或页面......网站上的所有内容)只有自上次访问时间以来被修改?htaccess,httpd.conf ......你有适合我的情况的现成指令吗?非常感谢您

cache server-setup last-modified apache-2.2

9
推荐指数
2
解决办法
2万
查看次数

使用缓存时磁盘 I/O 高?

几天前,我注意到磁盘 I/O 等待和磁盘活动下降(这很棒)。然后我还注意到我的缓存已满(*)并且碎片化。然后我刷新了缓存。在那之后,磁盘延迟和磁盘活动跳到了之前的水平(这很糟糕)。

IOtop 显示 [jbd2/sda2-8] 和 [flush-8:00] 始终处于磁盘使用率之上。这是一个 Dell R210,硬件 RAID 1 (H200),具有大量可用内存(总共 16 GB,其中大约 8 GB 是缓冲区/缓存)。

(*) 缓存是 PHP 的 APC 操作码缓存,它减少了 PHP 脚本执行的磁盘访问。缓存已满且碎片化,因为它包含来自开发实例的文件。当我注意到这一点时,我将它们过滤掉了。

问题是:为什么磁盘 I/O 在理论上应该减少时增加?以下是来自 munin 的一些图表。从 2 月 6 日到 8 日,缓存已满。

在此处输入图片说明 在此处输入图片说明 APC 缓存目前没问题。

在我注释掉 @cyberx86 所说的 apc.mmap_file_mask 后更改

在此处输入图片说明 在此处输入图片说明

几天后https://serverfault.com/a/362152/88934

performance hard-drive cache

9
推荐指数
1
解决办法
5178
查看次数

Debian/Ubuntu 是否可以在删除后重新初始化 /var/lib/apt/lists 和 /var/apt/cache?

/var/lib/apt/lists 和 /var/apt/cache 在删除或在某些情况下最小化它们后是否可以恢复它们的功能

我试图将 Ubuntu VM 缩小到最小大小,并决定删除 /var/lib/apt/lists 和 /var/cache/apt 以在系统需要更新时恢复它们。我已经完成了 /var/cache/apt 没有重大副作用,只需重新创建一些目录即可重新启用它。/var/lib/apt/lists 是我不确定的那个。是否可以通过重新创建 /var/cache/apt 来删除它并恢复其功能?

这样做会破坏 apt 和 dpkg 对系统配置的了解还是存储在其他地方?

ubuntu debian cache var apt

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

Varnish 如何处理存储空间不足?

我正在使用 Varnish 3.0.3(撰写本文时的最新版本),或多或少是默认安装,使用以下存储:

# # Cache file location
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
#
# # Cache file size: in bytes, optionally using k / M / G / T suffix,
# # or in percentage of available disk space using the % suffix.
VARNISH_STORAGE_SIZE=4000M
#
# # Backend storage specification
VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
#
Run Code Online (Sandbox Code Playgroud)

大多数可以缓存的页面都有很长的 TTL。我正在使用的站点很大,有数百万个页面,这不可能适合上面列出的存储大小 (4 GB)。

设置问题:

  • 让我们假设整个存储空间已满,并且缓存中的任何内容都没有过期(我的 TTL 是缓存中每个项目的 2 周)。

  • 我假设 Ban Lurker 在这里没用,因为它只会删除过期的项目,而没有过期的项目。

问题:

  • 鉴于上述情况,当额外的请求进入缓存中尚未存在的内容时,Varnish 会发生什么情况?无论这些项目的 TTL 是多少,Varnish 是否会尝试从缓存中删除旧项目?清漆会崩溃吗?悬挂?

  • 如果 Varnish 不处理场景,我可以做些什么来配置它以更好地处理场景?(我显然可以降低缓存中项目的 TTL,但我想知道是否有任何其他建议)。

在这种情况下,我看到 Varnish 有效地停止响应请求。在发生这种情况时,我并没有耗尽内存或 CPU 的内存。

谢谢。


跟进: …

cache varnish ttl

9
推荐指数
1
解决办法
5206
查看次数

如何动态设置清漆响应 TTL?

我的 php 脚本正在发送一个标头X_Cache_ttl: 1h,在我的清漆配置文件中我有

sub vcl_fetch
{
    if(beresp.http.X-Cache-ttl){
            set beresp.ttl = beresp.http.X-Cache-ttl;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试启动它时,带有 set 命令的行导致 varnish 失败。

在我得到的日志中

Expression has type STRING, expected DURATION
('input' Line 116 Pos 34) -- ('input' Line 116 Pos 56)
            set beresp.ttl = beresp.http.X-Cache-ttl;
Run Code Online (Sandbox Code Playgroud)

如何转换X-Cache-ttl为持续时间以便我可以动态设置 TTL?

我想避免多个类似的 if 语句

if(beresp.http.X-Cache-ttl == "60s") {
    set beresp.ttl = 60s;
}

if(beresp.http.X-Cache-ttl == "1h") {
    set beresp.ttl = 1h;
}
Run Code Online (Sandbox Code Playgroud)

如果重要的话,我在 centos 6 上使用 varnish 3.0.3。

cache varnish ttl

9
推荐指数
1
解决办法
4077
查看次数

Nginx + php-fpm - 运行时每个 php-fpm 进程 70-100% cpu

我有以下情况发生:

  • 我们使用 8 核、8GB 内存、2.6 GHz 的 linode - 使用 nginx + php-fpm - 我们得到了极高的 CPU 使用率图(我们不想成为如此糟糕的 VPS 邻居)...

  • 我们网站上一次只有不到 100 个用户——所以这种情况也非常尴尬——我们的 CPU 使用率非常高。

  • 我们正在使用一个非常未知的、可能是 CPU 密集型的 php-wise、可疑的可怕框架,而不是众所周知的、有据可查的、精心设计的其他框架,如 wordpress 或 drupal,其中有很多关于缓存(以及插件)的文档在 nginx + php_fpm 平台上处理缓存)php。

  • 因此,我们有大约 6 个开放的 php-fpm 进程在运行时单独消耗大量(30+,通常接近 99%)的 cpu - 我真的一点也不知道如何阻止它们使用这么多 cpu . 我不知道是哪些 php 脚本导致了这些峰值,因为它们一直在发生……通常只有 1 或 2 个正在运行 - 但是当所有 6 个脚本都运行时,我们最大化了所有 8 个 cpu。

  • 我的 pool.d/www.conf 文件具有以下设置:

    pm = dynamic
    pm.max_children = 10
    pm.start_servers = 4
    pm.min_spare_servers = 2
    pm.max_spare_servers = 6
    
    Run Code Online (Sandbox Code Playgroud)
  • 我们这样做 ^ …

vps nginx central-processing-unit cache php-fpm

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

让清漆在获取新数据时从缓存中发送旧数据?

我正在缓存动态生成的页面(PHP-FPM、NGINX)并在它们前面有清漆,这非常有效。

但是,一旦达到缓存超时,我就会看到:

  • 新客户请求页面
  • 清漆识别缓存超时
  • 客户等待
  • 清漆从后端获取新页面
  • varnish 向客户端提供新页面(并且还缓存了页面,以便下一个立即获取它的请求)

我想做的是:

  • 客户请求页面
  • 清漆识别超时
  • 清漆将旧页面交付给客户
  • varnish 从后端获取新页面并将其放入缓存

在我的情况下,过时信息不是一个大问题的网站,尤其是当我们谈论几分钟的缓存超时时。

但是,我不希望惩罚用户排队等待,而是立即提供一些东西。这在某种程度上可能吗?

为了说明这一点,以下是对我的服务器运行 5 分钟的示例输出,该服务器配置为缓存一分钟:

HTTP/1.1,200,  1.97,  12710,/,1,2013-06-24 00:21:06
...
HTTP/1.1,200,  1.88,  12710,/,1,2013-06-24 00:21:20
...
HTTP/1.1,200,  1.93,  12710,/,1,2013-06-24 00:22:08
...
HTTP/1.1,200,  1.89,  12710,/,1,2013-06-24 00:22:22
...
HTTP/1.1,200,  1.94,  12710,/,1,2013-06-24 00:23:10
...
HTTP/1.1,200,  1.91,  12709,/,1,2013-06-24 00:23:23
...
HTTP/1.1,200,  1.93,  12710,/,1,2013-06-24 00:24:12
...
Run Code Online (Sandbox Code Playgroud)

我省略了大约运行的数百个请求0.02。但是我仍然担心用户必须等待近 2 秒钟才能获得原始 HTML。

我们不能在这里做得更好吗?

(我遇到Varnish send while cache,听起来很相似,但不完全是我想要做的。)

解决方案

Shane Madden 的回答包含了解决方案,但我没有立即意识到。还有一个细节我没有包含在我的问题中,因为我认为它不相关,但实际上它是。

我目前使用的 CMS 解决方案有一个 varnish 数据库侦听器,因此能够通知 varnish 禁止内容已更改的页面。它发送了一个PURGE带有一些正则表达式的请求来禁止某些页面。 …

performance cache varnish

8
推荐指数
1
解决办法
8356
查看次数

如何在 Linux(和 FreeBSD)上刷新 DNS 解析器缓存

我是几个 Linux 和 FreeBSD 服务器的管理员,这是我遇到的一个问题:

服务器运行一个工具,每分钟对整个网络进行大量 DNS 查询。当它进行查询时,结果会在系统范围内缓存。如果 DNS 条目发生更改,则更改会在很晚之后被发现。

刷新 DNS 缓存的方法是什么?我的老板几乎要我把软件转移到有ipconfig /flushdns通话功能的Windows 上。我告诉我的老板我会在周末解决这个问题,周一所有的 Linux 和 FreeBSD 都会刷新缓存。如果我不这样做,他将强迫我制作 Windows 服务器并在其上运行软件。

如何在 Linux 和 FreeBSD 上刷新 DNS 缓存?

domain-name-system linux freebsd cache

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