Joe*_*l K 9 raid http ssd cache squid
我正在考虑在带有 SSD 驱动器的系统上设置鱿鱼(或可能是清漆)缓存。
明显的好处是这些系统具有很高的读取速度,我希望我的命中率相当高。
假设我可以将 7 个 SSD 放入 RAID 配置中。(有些情况可以让我打包更多)
实施问题:
我应该使用RAID0吗?(我希望驱动器最终会失败,所以这看起来很危险。)
我应该使用RAID10吗?(这将我的磁盘占用空间减半,这很昂贵。)
我应该使用RAID5吗?(众所周知,SSD 具有“糟糕”的写入性能和写入限制,所有额外的奇偶校验写入可能会大大减慢这一速度。)
我应该将每个磁盘视为自己的鱿鱼数据存储吗?(squid 处理多个数据存储的效果如何?如果/当一个失败时会发生什么?)
我是否应该忽略数据存储而只是将 SSD 放入大型 SWAP 分区并让 linux VM 来做这件事?(看起来很草率)
在生产环境中使用 SSD 的人们的任何建议将不胜感激。(特别是如果您将它们用于 HTTP 缓存)
小智 8
在过去的 9 个月里,我们一直在 ssd 驱动器上使用 varnish,它对我们来说效果非常好。我们之前使用了一个带有鲤鱼层的鱿鱼内存只缓存。它有效,但内存碎片是一个需要频繁重启的真正问题。Squid 2.x 也将只使用一个内核,这使得它在当前硬件上效率很低。
对于我们的站点,它对缓存非常友好,我们看到大约 10% 的 CPU 使用率在 8 核机器上提供 100Mbit/s 的流量。在我们的测试中,我们在达到 2 个 1Gb 端口的 CPU 限制之前就耗尽了带宽。
我确实有一些关于使用 ssd 缓存运行 varnish 的建议。
随机写入性能真的很重要。在决定使用 intel x-25m 之前,我们尝试了几个供应商的 ssd 驱动器。我们已经看到一些帖子对于 4k 随机写入低至 0.1MB/s,我们使用 x-25m 获得了 24MB/s 4k 随机写入。
突袭0。2.0 中的缓存不是持久化的,所以不用担心冗余。这确实会使重启受到伤害,但这种情况很少见。您可以执行诸如加载新配置和清除对象之类的操作,而无需重新启动。
mmap 模式。清漆缓存可以映射到文件或使用交换空间。使用交换对我们来说效果不佳,它倾向于使用更多的 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 服务器。
归档时间: |
|
查看次数: |
6334 次 |
最近记录: |