update:緊急修復一個嚴重的bug,影響多節點memcached下的余數哈希分布。jmx監控正式啟用。更多單元測試。
XMemcached是一個基于java nio的memcached客戶端。最新發布1.10-RC1版本,這個版本其實早就完成,一直沒有環境來測試,本機測試沒有多大價值。今天做了一個初步測試,在效率上已經超越了spymemcached最新的2.3.1版本,具體的測試數據請看下面,下載地址
這里,更新了
wiki。
1.10-RC1的主要改進:
1、
性能優化,具體請參見wiki,在測試中已經超越了spymemcached最新的2.3.1版本
2、
重構,引入Optimiezer、XMemcachedClientBuilder等類,并引入泛型方法,使API接口更趨實用性和便捷性。1.10rc1將不兼容1.0版本,具體API請參見javadoc。可以保證的是在1.10穩定后,xmemcached在API接口不會再有大的變動。
3、
引入maven做項目構建,原來的ant構建仍然可用。
4、
bug修復,具體參見issues報告,更多測試提高健壯性。
5、
引入jmx監控,可以通過java -Dxmemcached.jmx.enable=true來啟用jmx監控,jmx功能可以統計xmemcached的各種操作次數,以及優化參數調整等,更多信息請參考javadoc和wiki
后續計劃:
1.10版本的正式發布
1.11版本的開發工作,引入JMX監控。
今天給出的是memcached存儲java原生類型的效率測試,key和value都是字符串,memcached單節點跑在局域網內的服務器上,spymemcached使用的是2.3.1版本,xmemcached使用的是1.10-RC1,兩者都是默認配置。具體圖表請看下面及相應說明。
首先是在我本機windows xp環境(因為主要看對比,機器環境不再具體說明),連接memcached服務器所做的測試,下面是xmemcached和spymemcached的set操作效率對比,縱坐標為TPS,橫坐標為線程并發數(下同)。
顯然,兩者的set操作效率在windows下極為接近。接下來是get操作的對比直方圖:
XMemcached在get操作上保持傳統優勢,并發越大,優勢越明顯。在測試了windows下兩個客戶端的表現,繼續做linux下的測試數據,因為所用的機器是一臺8核的牛機,因此TPS非常驚人。首先是set操作的對比:
不用多說,xmemcached全面占優。再看get操作的對比:
一個奇特的現象是在200線程并發的時候,spymemcached反而超過了xmemcached,這一現象反復測試還是如此。其他并發下,xmemcached全面占優,在達到500并發時,spymemcached的get很多超時,因此數據作廢,而xmemcached由于可以設置get的操作的超時時間更長,因此仍然正常運行。
從以上測試可以看出,1.10-RC1版本的XMemcached存儲原生類型已經在windows和linux平臺上的效率都超過了spymemcached。對于自定義對象和容器對象的存儲測試也證明xmemcached的效率已經全面超越了spymemcached。很希望有更多的測試報告,畢竟我的測試可能還是不夠客觀。