最近被 cache server 整的很慘 XD
先是以為我們用的 squid 效能不行 (後來證明是我頭腦的問題 XD)
改用了 nginx, varnish 甚至是 apache traffic server 結果出圖都還是不太順利
結果才發現是 SLB 說 cache server 的 80 port 一直 up and down
後來更慘 SLB 產生 Mac Flapping
後來把 Linux kernel 的 Netfilter 關掉
然後在 /etc/sysctl.conf 把 tcp 的 buffer 加大後
情況就舒緩許多 於是還是換回 squid 2.7.9
在穩定後 想研究一下其他網站的 cache solution 是什麼
大致上離不開
- 自己開發的 cache server,比如說 Facebook 採用自己開發的 Cachr 後端搭配 Haystacks 儲存
- 用 open source 的 cache server, 最知名的大概就是 squid (採用的有 wikipedia, 一些 CDN(Hinet …etc)), 或者 varnish (Gentoo 的 wiki), 或者 traffic server (Yahoo 所採用的)
- 改 open source 的 cache server, 像大陸的淘寶就是用 squid 去改寫號稱省好幾百MB的記憶體也支援 sendfile
wikipedia 有簡報他們的 architecture
概觀如下
- 30000 HTTP requests/s during peak-time
- 3 Gbit/s of data traffic
- 3 data centers:Tampa,Amsterdam, Seoul
- 350 servers, ranging between 1x P4 to 2x Xeon Quad- Core, 0.5 - 16 GB of memory
本篇只著重在 cache 的部分
他們用 squid 當 cache 根據簡報所說
- 有 55 台 squid server
- 每一台大約 1000 HTTP requests/s 壓力時會到 2500
- 流量每台大約 100 - 250 Mbit/s
- 連接數每台約 14000 - 32000
關於硬體
- 每台 squid 使用 40G 的空間當 cache
- 每台 squid 都四顆硬碟
- 每台都有 8G 的記憶體 squid 使用一半(也就是 4G)
- Hit rates 的表現 Text 有 85%, 多媒體(img, music)的部分則達到 98% (因為使用了CARP)
CARP 的使用如下
相較之下 我們這裡…
- 16台 squid server
- 每台大概 150 個 requests/s, 最多單台有來到 300 r/s,大概總 requests/s 在 3000 左右
- 每台流量大概 60Mb/s, 最多來到 180Mb/s 左右, 全部的 cache server 最高大概有 1.5Gb/s 的流量
- 每台都有兩顆硬碟採用 Raid0
- 每台記憶體都有 4G
- hit rate 的表現大概在92%~95%
我們這裡沒有用 CARP 直接 squid 後端接 original server
所以看起來表現好像還不錯…