今天,有一個使用我優化的Memcached cache Client給我發了郵件問到一個參數的作用,覺得還是比較重要的一個參數,因此也說一下,同時也在這里說一下,當前優化過的客戶端已經作了幾次小的升級,修復了一些邊界數據的問題,大家如果在使用的話,最好能夠升級。( http://code.google.com/p/memcache-client-forjava/ )
郵件如下:
你好:
<socketpool name="pool0" failover="true" initConn="5" minConn="5"
maxConn="250" maintSleep="5000" nagle="false" socketTO="3000"
aliveCheck="true" >
<servers>10.0.0.16:11111</servers>
<weights>10</weights>
</socketpool>
能解釋下maintSleep這個意思么?我看有的資料說吧它設置為0性能更好,能給些建議么?謝謝!!我們現在的PV大約每天500萬。
這個參數是對此連接池維護線程的檢查間隔時間的配置,如果配置小于等于0,則將不會有后臺線程維護此連接池,參數單位為毫秒,下面解釋一下維護連接池的含義,其實就和其他的資源池一樣,資源池的目的就是為了解決資源的申請和釋放的開銷增加系統壓力的問題,將資源通過池的方式回收重用,有利于系統性能的提高。memcached cache client 其實是通過socket來和服務端進行通信,建立socket連接也是比較消耗時間的工作,因此配置了池的初始連接數(initConn),最小連接數(minConn),最大連接數(maxConn)。這三者關系如下圖,維護他們之間狀態轉移的就是后臺線程。
后臺進程維護資源池的作用就是將有限資源回收,例如數據庫連接,如果一臺oracle只有500個連接數可以支持,那么如果一個應用都占用了50個閑置,那對于其他需要資源的應用來說無疑是一種浪費。但如果配置了資源管理,但由于應用屬于忙時和閑時交替比較頻繁的情況,那么如果時間配置的不是很合適,就會達不到原來資源池的作用,資源反復回收和申請。所以對于這個參數的配置,個人覺得一定要配,配置的值需要注意,初始化和最小的值可以是自己預估平時平均并發處理的均值,最大的連接數當然依賴于資源的總數,而維護時間間隔則最好是能夠根據閑時和忙時的情況來考慮配置,這樣既不會浪費資源,同時也不會使資源池時效。
順帶說一句,如果對于數據丟失要求不是很苛刻,然后網絡情況也不錯的時候,可以將aliveCheck設置為false,因為如果是true,在每一次發送任何數據操作之前都會去做心跳檢查,這個未來也會考慮去優化。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
