Wikipedia cache 架構

最近被 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 是什麼
大致上離不開

  1. 自己開發的 cache server,比如說 Facebook 採用自己開發的 Cachr 後端搭配 Haystacks 儲存
  2. 用 open source 的 cache server, 最知名的大概就是 squid (採用的有 wikipedia, 一些 CDN(Hinet …etc)), 或者 varnish (Gentoo 的 wiki), 或者 traffic server (Yahoo 所採用的)
  3. 改 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

所以看起來表現好像還不錯…