從 EC2 Infrastructure 這篇文章看一些觀念...

標題不知道怎麼下,先訂這樣...

我會訂很多 feed 的一個原因是,有時候總是會看到一些有趣的東西。像是 Amazon Web Services Blog 的文章大多都沒什麼看頭,主要是廣告性質。但有時候總是有一些有趣的東西可以吸收,像是「Architecting for the Cloud」這篇文章裡所提到的「EC2 Infrastructure」這篇。

對我而言,MySQL Configuration 這段提到的觀念讓你知道 XFS 上的 MySQL 要如何備份。雖然他是以 Amazon EBS 備份,但同樣的觀念也可以用在 NetApp 或是 Sun Storage 7000 Unified Storage Systems 上。(snapshot 的觀念)

然後是 Postfix configuration 這段所提到的觀念。如果你發信常常會被擋住,有一些公司有提供 SMTP 服務幫你處理。他所提到的 AuthSMTP 變成一個 entry point,我可以用這個站台去其他的論壇找資料比較,看看哪些服務的穩定性比較好,而且價位相對起來比較便宜。

Facebook 的 memcached

目前 Facebook 用了 800 台,共 28TB 的 memcached server:「Scaling memcached at Facebook」。計算上應該是有很多 64GB RAM 這個等級的 server 在撐。(2007 年五月的時候是 200 台 16GB 的機器:Re: Largest production memcached install?)

Facebook 使用的量夠大,所以花了不少時間找出 memcached 本身的問題。他們把修正後的版本放到 Github 上,這陣子應該會慢慢 back-port 回官方版本:「Facebooks modifications to memcached for I/O, CPU and memcory scaling」。

首先是 memcached 用 TCP,但前端的 Web Server (Apache) 有很多連線,這對 memcached 本身不是問題 (因為使用 libevent),但每個連線都會消耗一些記憶體 (像是 buffer),所以 Facebook 改寫 buffer 的部份,以 buffer pool 的方式共用資源。("we implemented a per-thread shared connection buffer pool for TCP and UDP sockets")

另外是開發 UDP memcached Protocol,用這個方式提高 TCP Protocol 本身的效率問題。但實際在使用時發現 Linux kernel 對於 UDP socket 的 locking mechanism 並不好。治本的方法是修正 Linux kernel 的 UDP socket locking mechanism,不過他們認為工程太浩大,所以改為使用多個 UDP socket 解決這個問題。

在 appliction level 則是儘量使用 multi-get,盡可能減少封包數量以及延遲時間 (latency)。

再來是因為封包數量太多,Linux kernel 對於網路處理預設的方式會有過多的 interrupt,所以這部份要調整成 polling-based algorithm (並且配合 interrupt 避免過高的 latency),以此提高 Network I/O 效率。

接著發現 memcached 的統計分析是一個 global lock,在 8-core 上會有 20%~30% 的 CPU resource 卡在 lock 上,所以這部份被改寫成 per-thread stat,並且在真正需要產生資料時再加總,避免了 lock 的問題。最後則是發現 Linux kernel 處理 UDP transmit 的 queue 本身也有 lock 問題,這部份的改善則是透過 batch processing 減少 locking 問題,降低 locking 的需求。

在這些修正後,單台 server 可以從原先的 20k UDP requests/sec 拉到 50k UDP requests/sec。

Sun Storage 7110

有機會跟 Sun 借測 Sun Storage 7110,目前測了半個小時,可以理解為什麼 ZFS 會被 NetApp 告了... XD

因為我已經取得 sales 的同意寫「開箱文」,所以這幾個禮拜 (不知道測多久) 會陸陸續續寫一些出來。

這是 7110 的狀態頁,這頁不是 Flash/Java,看起來可能是用 Comet 做一些效果:

美金定價在官方網站有,目前是 USD$10,995,以這種功能來看,光是定價就殺翻了... XD

flot - 用 jQuery 畫圖的 library

我說的是 flot -Attractive Javascript plotting for jQuery 這個 library,利用 jQuery 畫圖。

對 IE6/Firefox2/Safari3/Opera9.5 以上的瀏覽器都可以用。(不過,IE 是透過 Canvas 模擬器支援,理論上速度會比較慢。實際用 IE7 測試,簡單的圖速度還蠻快的)

重點程式碼是:

var d1 = [[0, 1], [1, 1], [2, 2], [3, 2], [4.5, 2.5], [5, 2], [6, 3]];
$.plot($('#placeholder'), [{label: 'test', data: d1, lines: {show: true}}]);

出來的圖是:(那個 test page 只是一個 <h1>test page</h1>,與上面的程式碼無關)

預設的效果就蠻漂亮了 (線條有陰影效果)。

官方網站上的範例頁有更多的範例可以看。

FreeBSD 上升級到 PHP 5.2.8 的一些小細節...

PHP 5.2.8 是 security update,用 5.2.6 的人應該儘速更新。(Debian sid php5 怎麼還在 5.2.6.dfsg.1-0.1... =_=)

因為 php5-pcre 直接被納入 php5 內 (也就是不需要額外再安裝,這個 port 已經消失),而直接用 portupgrade 升級 php5 會造成 php5-pcre 不會被移除,所以需要一些強硬的手段:

# cd /var/db/pkg
# pkg_delete -f php5-pcre-*
# portupgrade -f php5*
# portupgrade -f pecl*

然後再跑 pkgdb -F 把 dependency 清理一下。

博客來的網站的註冊頁面...

現在要遇到因為 Firefox 而導致「基本功能」不能用的網站其實還真的不多,除了學校與銀行的網站經常是 IE-only (噗),商業性網站通常還是會考慮 Firefox,畢竟網路重度使用者比較不會被網路交易的技術門檻擋到。

博客來從以前就很不 Firefox-friendly。剛剛想要訂「銀河鐵道之夜」,如果你用 Firefox,「加入會員」頁按「同意」是過不去的。

改去金石堂訂就沒這個問題 (然後發現單本就可以免運費到超商拿貨),那... 博客來 byebye... XD

Update:這兩天忙著其他東西所以沒找出原因,我測試的結果是,Firefox 3.1alpha、Firefox 3.0.6pre 點了「同意」都會失效,如果是 Windows 上的標準版本就沒問題。當時用了五分鐘看了 Javascript code 也看不出來 (不是直接判斷 "Firefox" 這個字),等有時間的時候我再找原因看看...

Firefox 擋廣告的 Adblock Plus 釋出 1.0 版

官方公告:Adblock Plus 1.0 released

Adblock PlusFirefox 上相當熱門的 addon (目前在下載排行榜第三名),是一套擋廣告的附加軟體。你可以自己寫條件式擋廣告,或是直接訂閱別人寫好的條件式 (會自動更新!)

在「Known Adblock Plus subscriptions」這邊有列出一些常見的阻擋名單,我個人推薦 EasyList,在看國外的網站會少很多廣告。如果有在看大陸網站,可以試試 ChinaList,擋的也還不錯。

Amazon SimpleDB 降價

Amazon Web Services 最近動作好多 XD

Amazon SimpleDB 是一個類似 Google BigTable 的資料庫服務。從 2008/12/1 開始,Amazon 決定降價!Data Storage 的部份除了從 USD$1.50/GB 降到 USD$0.25/GB (原來的 1/6!),還另外提供六個月免費「試玩」的 quota:

We've made the business decision to go with SimpleDB even simpler than it was before. You can now get started for free. For at least the next six months, you can consume up to 500 MB of storage, and you can use up to 25 machine hours each month. You can transfer 1 GB of data in, and another 1 GB out. You can move as much data to and from Amazon EC2 as you would like, for free.

試玩的 quota 如上所寫,500MB、25 machine hours/month、1GB/month 流入流量、1GB/month 流出流量。

站如果不大,幾乎不會花到錢 :p

Ubuntu 下看 rmvb...

網路上大多數的方法都是教你加入 public key,然後用 apt-get install w32codecs 安裝,我不太喜歡這個方法。(這樣等於是多了一組 key 可以亂搞你的系統)

後來是在 clsung 的「Ubuntu 看 rmvb」看到,直接抓 w32codecs 的 deb 檔即可:http://www.debian-multimedia.org/pool/main/w/w32codecs/。抓完後用 dpkg -i ooxx.deb 裝到系統裡,接下來 mplayer 就可以看 rmvb 了...