2015-06-16 22 views
1

如何爲Cassandra中的memtable和sstable之間的刷新隊列分配更多內存。我得到超時錯誤,堆和年輕區域的使用似乎在限制之內。除了機器中的Cassandra之外,沒有其他處理髮生。還有如何查找是否有任何請求被丟棄在以太網卡而不是Cassandra。 我使用Cassandra Datastax 4.7和Java 1.8。如何更改cassandra的刷新隊列大小

回答

1

如何通過在cassandra.yaml文件編輯memtable_flush_writers改變卡桑德拉

可以增加沖洗作家的數量的刷新隊列大小。見related docs.

如何分配進行的memTable和 的SSTable在卡桑德拉的沖洗隊列更多的內存。

您不會將內存分配給隊列。您只能增加隊列的線程。您可以完整地增加JVM的內存。 Cassandra的堆大小通常建議爲8GB,儘管某些特定的JVM調優會提高堆大小。

另外如何找到是否有任何請求被丟棄在以太網卡上,而 不是由卡桑德拉。 根據您的一致性級別,如果沒有足夠的副本確認回來,則您的讀取或寫入操作可能會失敗。

如果你有興趣的網絡數據包丟棄專門看一看的輸出:

# ifconfig 
eth0  Link encap:Ethernet HWaddr XX:34:XX:XX:10:03 
      inet addr:xxx.xxx.xxx.xxx Bcast:xxx.xxx.xxx.xxx Mask:255.255.240.0 
      UP BROADCAST RUNNING MULTICAST MTU:9001 Metric:1 
      RX packets:89549235 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:100307025 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 txqueuelen:1000 
      RX bytes:757464549909 (757.4 GB) TX bytes:27216611814 (27.2 GB) 

ifconfig保持這則錯誤的數據包的數量,跌落等在網卡級別。