我們爲我們的Web應用程序設置了三個memcache服務器。內存緩存連接數永不丟失,持續增長
兩個工作正常,處理成千上萬的讀寫操作,同時每個連接保持不超過12個連接(根據memcache-top)。
我們有第三個memcache服務器負責存儲管理客戶端會話數據(使用PHPs built in memcache session handler)和一些隨機應用程序數據。出於某種原因,此盒子上的連接數量永遠不會下降,只會隨着時間的推移而增加。例如,我們最近重新啓動了服務器,一小時後,memcache-top記錄了300個連接。
代碼庫使用持久連接和動態連接的混合,但我一直無法想出一個簡單的例子來重新創建連接永遠不會死的情況。這第三個內存緩存服務器實際上承載我們的web應用程序的最不活躍的部分,你可以從內存緩存,最高見:
memcache-top v0.6 (default port: 11211, color: on, refresh: 3 seconds)
INSTANCE USAGE HIT % CONN TIME EVICT/s READ/s WRITE/s
memcache1:11211 15.7% 83.5% 10 1.2ms 0.0 24.9K 34.5K
memcache2:11211 15.8% 81.3% 10 1.0ms 0.0 19.1K 31.6K
memcache3:11211 0.1% 0.0% 354 1.1ms 0.0 4 321
AVERAGE: 10.5% 55.0% 124 1.1ms 0.0 14.7K 22.1K
TOTAL: 0.6GB/ 6.0GB 374 3.2ms 0.0 44.0K 66.4K
所以我的問題是:爲什麼這個內存緩存實例的連接永遠不死?
Q1。那第三個「麻煩」的服務器碰巧是* BSD,而那些2個「好」的服務器 - Linux? Q2。所有3個memcache的CPU使用率是多少? – chronos 2009-12-03 14:26:49