AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 15118
Accepted
Joel K
Joel K
Asked: 2009-05-30 12:41:16 +0800 CST2009-05-30 12:41:16 +0800 CST 2009-05-30 12:41:16 +0800 CST

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

  • 772

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

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

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

实施问题:

  • 我应该使用 RAID0 吗?(我预计驱动器最终会失败,所以这似乎很危险。)

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

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

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

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

非常感谢在生产环境中使用 SSD 的人们提供的任何建议。(尤其是如果您将它们用于 HTTP 缓存)

http cache squid raid ssd
  • 5 5 个回答
  • 6380 Views

5 个回答

  • Voted
  1. Best Answer
    Jason Cook
    2009-06-05T22:25:06+08:002009-06-05T22:25:06+08:00

    在过去的 9 个月里,我们一直在 ssd 驱动器上使用清漆,它对我们来说效果非常好。我们之前使用了带有 carp 层的仅 squid 内存缓存。它有效,但内存碎片是一个需要频繁重启的真正问题。Squid 2.x 也将只使用一个内核,这使得它在当前硬件上相当低效。

    对于我们的站点,它对缓存非常友好,我们看到大约 10% 的 CPU 使用率在 8 核机器上提供 100Mbit/s 的流量。在我们的测试中,我们在使用 2 个 1Gb 端口达到 cpu 限制之前耗尽了带宽。

    对于使用 ssd 缓存运行 varnish,我确实有一些建议。

    • 随机写入性能真的很重要。在选择英特尔 x-25m 之前,我们尝试了几家供应商的 ssd 驱动器。我们已经看到了一些低至 0.1MB/s 的 4k 随机写入的帖子,我们使用 x-25m 获得了 24MB/s 的 4k 随机写入。

    • 突袭0。2.0中的缓存不是持久化的,所以不用担心冗余。这确实使重新启动受到伤害,但这种情况很少见。您可以执行诸如加载新配置和清除对象等操作而无需重新启动。

    • 地图模式。清漆缓存可以映射到文件或使用交换空间。使用交换对我们来说效果不佳,它倾向于使用更多的 i/o 带宽来服务相同数量的流量。linux swapin 代码中有一个 4 个扇区的预读,我们编写了一个补丁来删除它,但还没有在生产中尝试过。

    • 截止日期调度程序。对于 2.6.28+,这是 ssd 感知并且表现良好。我们尝试了 noop,但发现最后期限更公平,因为 i/o 带宽变得有限。

    • 禁用预读。由于没有旋转延迟,因此没有必要仅仅因为您可能需要它而读取额外的数据。i/o 带宽在这些事情上很宝贵。

    • 运行 2.6.28+。Linux 上大量空间的 mmap 可以很好地锻炼内存管理器,但拆分 lru 补丁有很大帮助。当我们更新时,kswapd cpu 使用率下降了很多。

    我们已经在链接文本中发布了我们的 vcl 文件以及我们与 varnish 一起使用的几个工具。vcl 还包括一个简洁的 hack,它实现了一个基于 maxmind 数据库的非常快速的 geoiplookup 服务器。

    • 8
  2. Daniel Lawson
    2009-05-30T13:15:53+08:002009-05-30T13:15:53+08:00

    我没有将 SSD 用作 HTTP 缓存,但我可以进行以下观察:

    并非所有的 SSD 都是平等的,因此您必须非常小心地挑选合适的 SSD。FusionIO 制造支持 PCIe 的 SSD,这些 SSD 性能非常高端(容量相对较低),但价格昂贵。英特尔的 X25-E SLC SSD 性能非常好,价格更实惠,但容量仍然很低。做你的研究!我绝对可以推荐 X25-E SLC 变体,因为我在生产系统中使用这些变体。

    还有其他 SSDS 可能会为您提供出色的连续读/写速度,但对于缓存之类的东西而言,重要的是随机 IO,并且许多 SSD 将提供与旋转磁盘大致相同的随机性能。由于 SSD 上的写入放大效应,旋转磁盘通常性能更好。许多 SSD 的控制器质量较差(例如,较旧的 JMicron 控制器),在某些情况下性能会显着下降。Anandtech 和其他网站与 iometer 等工具进行了很好的比较,检查那里。

    当然,SSD 很小。Intel X25-E,我认为它是我见过的最好的 SATA SSD,只有 32 GB 和 64 GB 两种版本。

    对于 RAID 级别,标准 RAID 性能说明仍然适用。对 RAID 5 的写入主要涉及读取您要修改的数据块、读取奇偶校验块、更新奇偶校验、写入数据块和写入奇偶校验,因此它仍然会提供比其他 RAID 更差的性能水平,即使使用 SSD。但是,对于像 X25-E 这样的驱动器具有如此高的随机 IO 性能,这可能并不重要——因为对于类似大小的阵列,它在旋转磁盘上的性能仍将优于随机 IO。

    据我所见,RAID 控制器带宽过早饱和,无法从 7 磁盘 RAID 集获得最大收益,至少就顺序性能而言。当前型号的 SATA 控制器(3ware、areca 等)的速度不能超过 800MB/s。跨多个控制器(例如,几个 RAID1 而不是单个 RAID10)拥有更多更小的阵列将改善这一点,尽管每个阵列的单独性能会受到影响。

    关于 HTTP 缓存,我认为最好使用一组体面的旋转磁盘和大量 ram。经常访问的对象将保留在内存缓存中 - 无论是在 squid 的内部缓存中,还是在您的操作系统的 fs 缓存中。因此,简单地给机器更多的内存可以显着减少磁盘负载。如果您正在运行大型 squid 缓存,您可能需要大量磁盘空间,而高性能 SSD 的容量仍然相对较低。

    • 1
  3. kashani
    2009-06-13T13:50:27+08:002009-06-13T13:50:27+08:00

    我对 SSD 驱动器不是很熟悉,但我可以谈谈我使用过的那种架构,它可能有助于解决您的一些问题。

    兄弟姐妹

    在我的例子中,我构建了四台服务器,每台都有 16GB 的 RAM。我将 9GB 设置为 Squid 使用的内存缓存。我将它们配置为一组兄弟姐妹,因此对一个服务器的查询将在查找数据之前查询其他服务器。我总共有 36GB 的内存缓存。我不会超过四个兄弟姐妹,因为他们之间的交流开始陷入困境。

    贵宾

    我为四台服务器配置了一个 VIP 供客户与之交谈。这解决了当一台服务器出现故障时会发生的情况。

    孩子们

    我将我的 Web 应用程序设置为查询在 127.0.0.1 上运行的本地 Squid 服务器。然后将此 Squid 实例的父级配置为 VIP。这允许在整个 VIP 出现故障时非常快速地进行故障转移。如果父母没有回应,孩子会直接查询服务。如果您使用单个 Squid 服务器并且没有 VIP,它也很方便。当然,如果您的网络服务器上的本地 Squid 实例出现故障,一切都会停止。

    鱿鱼本身

    我还没有真正看过 3.0,但 2.x 仍然是单线程的。在某些时候,您将用完 CPU 或 TCP 缓冲区。如果可能的话,我会将缓存分布在少 2-3 个盒子中。此外,如果您看到系统不断增长,您可能希望将来计划对您的 Squid 农场进行分区。

    无论如何,祝您的 SSD 构建好运。我很想知道结果如何,因为我将来可能会走这条路。

    • 1
  4. Pyrolistical
    2009-05-30T13:17:06+08:002009-05-30T13:17:06+08:00

    你为什么还要考虑raid 10或5。你想要这里的性能。您不在乎驱动器是否只是关闭,因为它只是一个缓存。

    只需使用 raid 0 或将它们分开。我认为分开会更好,因为驱动器故障不会删除您的整个缓存。

    • 0
  5. guest
    2013-12-24T08:04:15+08:002013-12-24T08:04:15+08:00

    Squid 文档建议不要使用 RAID,而是在额外的磁盘上设置额外的缓存目录。

    • -1

相关问题

  • IIS 6.0 (Windows Server 2003) 上的 HTTP 压缩

  • RAID - 软件与硬件

  • 用于 Windows 和 Linux 的 ICH9R 上的 RAID 配置和 3xHDD

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

  • RAID 控制器通常是否存在 SATA 驱动器品牌兼容性问题?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve