Raid
Squid 或其他帶有 SSD 記憶體儲存的 HTTP 記憶體?
我正在考慮在帶有 SSD 驅動器的系統上設置 squid(或可能是清漆)記憶體。
明顯的好處是這些系統具有很高的讀取速度,我希望我的命中率相當高。
假設我可以將 7 個 SSD 放入 RAID 配置中。(有些情況可以讓我收拾更多東西)
實施問題:
- 我應該使用 RAID0 嗎?(我預計驅動器最終會失敗,所以這似乎很危險。)
- 我應該使用 RAID10 嗎?(這將我的磁碟佔用空間減半,這很昂貴。)
- 我應該使用 RAID5 嗎?(眾所周知,SSD 具有“糟糕”的寫入性能和寫入限制,所有額外的奇偶校驗寫入可能會大大減慢這一速度。)
- 我是否應該將每個磁碟視為它自己的 squid 數據儲存?(魷魚處理多個數據儲存的能力如何?如果/當一個失敗時會發生什麼?)
- 我是否應該忽略數據儲存,只將 SSD 放入大型 SWAP 分區並讓 linux VM 來做這件事?(看起來很草率)
非常感謝在生產環境中使用 SSD 的人們提供的任何建議。(尤其是如果您將它們用於 HTTP 記憶體)
在過去的 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 伺服器。