2014-04-09 28 views
2

因此,testrunner過於複雜,cbloadworkgen沒有給出請求時間,並且mcsoda似乎與membase協議不兼容(因此執行memcached直接測試 - 完全避免集羣層)。什麼可用於(可靠地)測試Couchbase延遲?

還有別的嗎?或者有什麼已知的方式來真正使用其中一種工具替換couchbase? 我需要99%,95%的請求時間。

回答

3

嘗試cbc-pillowfight作爲libcouchbase-tools包的一部分發貨。這支持memcached和couchbase協議,並提供類似於你想要的時間。例如:

cbc pillowfight -h localhost -b my_bucket -i 10000 -T -d 

-T顯示的定時,並且能夠-d分佈式緩存(啞)節點。確保您將my_bucket更改爲您的存儲桶命名的任何內容。完整的文檔位於cbc man page

例定時輸出(剪斷,爲了簡潔):

 
[1397065322.061025] Populate 
       +---------+---------+---------+---------+ 
[110 - 119]us |################ - 68 
[120 - 129]us |######################################## - 163 
[130 - 139]us |######################### - 105 
[140 - 149]us |###################### - 93 
[150 - 159]us |####################### - 94 
... 
       +---------------------------------------- 
[1397065322.070389] Run 
       +---------+---------+---------+---------+ 
[110 - 119]us |################ - 69 
[120 - 129]us |######################################## - 165 
[130 - 139]us |########################## - 109 
[140 - 149]us |###################### - 94 
[150 - 159]us |####################### - 95 
[160 - 169]us |################### - 81 
[170 - 179]us |############### - 62 
[180 - 189]us |############### - 63 
[190 - 199]us |########### - 46 
[200 - 209]us |######## - 35 
[210 - 219]us |######### - 39 
... 
       +---------------------------------------- 
+0

你能幫我以下結果嗎? http://stackoverflow.com/questions/23013429/couchbase-possible-reasons-for-10x-difference-in-cbs-pillowfight-latency-test 這些看起來很奇怪,我無法得到它 - 移動後到tmpfs(所以slowdisk的刷新不會影響它),延遲分佈沒有改變 - 集羣使90%的寫入速度降低了1000%。它會是什麼? –

4

您是否在談論開發或生產服務器場景? Couchbase延遲本身不會成爲瓶頸 - 它基本上只有網絡延遲和導致延遲的應用程序堆棧(例如PHP)。

我已經使用了weighttp工具來主要在開發場景中測試請求/秒數 - 該工具還應該爲您提供每個HTTP請求的平均延遲時間。您可以find my setup on GitHub.它使用真正的HTTP請求調用gwan C-servlet進行多個CB查詢。

如果您想了解如何實現最佳的延遲和吞吐量與couchbase:

  • 使用原生代碼的異步使用libcouchbase。 PHP,NodeJS,Java ..所有這些都是生產堆棧中真正的瓶頸。
  • 異步允許保留多個couchbase查詢在飛行中 - 這樣延遲可能「發生在平行」 - 最終用戶會發現只有輕微的改進,服務器的負載將是
  • 確保您的應用程序使用連接池。您不想爲每個用戶請求初始化連接!上面的servlet實際上是一個粗略的實現。
  • 如果可能,請將couchbase實例保持爲本地。我正在運行一個集羣,每個節點運行我的應用服務器和一個couchbase實例,每個cb節點都有自己的存儲桶來緩存可以緩存的東西(如配置)。如果您的備份需求不那麼嚴格,您可以使用XDCR - 不需要自動故障轉移到活動副本。如果你運行兩個節點並帶有一個副本,這意味着你的密鑰空間的50%在另一臺機器上。
  • 如果數據集很大,請務必使用SSD。

這種方式可以實現令人難以置信的性能,高達300.000 OPS /秒​​,如果使用一個體面的本地節點(酷睿i7 4770k,32 GB DDR3-1600),240 GB SSD用於〜75 $ /月在這裏德國)如果在一個集羣中少一點(不知道爲什麼)。這是我與前面的測試基準運行的8節點CouchBase設置(與24個額外的負載生成器節點):

CouchBase Cluster running at 1.6 mio ops/sec

結論是:不擔心couchbase本身。只擔心自己的應用程序體系結構/代碼及其延遲。有一件事是,CouchBase知道魔術 - 另一件事是即使它的'壞' - 你幾乎不會有更好的與其他產品的延遲。

+1

沒有PHP,這個項目是C++的本質..偉大的答案!將盡快嘗試你的代碼.. –