【问题标题】:How to change the flush queue size of cassandra如何更改 cassandra 的刷新队列大小
【发布时间】:2015-06-16 21:36:09
【问题描述】:
如何在 Cassandra 中为 memtable 和 sstable 之间的刷新队列分配更多内存。我收到超时错误,堆和年轻区域的使用似乎在限制范围内。机器中除了 Cassandra 之外没有其他处理发生。还如何查找是否有任何请求被丢弃在以太网卡上而不是被 Cassandra 丢弃。
我使用 Cassandra Datastax 4.7 和 Java 1.8。
【问题讨论】:
标签:
cassandra
datastax-enterprise
datastax-java-driver
【解决方案1】:
如何改变cassandra的flush queue大小
您可以通过在 cassandra.yaml 文件中编辑 memtable_flush_writers 来增加刷新写入器的数量。见related docs.
如何为 memtable 和 memtable 之间的刷新队列分配更多内存
sstable 在 Cassandra 中。
您不会将内存分配给队列。您只能增加队列的线程数。您可以完全增加 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 在 NIC 级别保留错误输出、丢弃等数据包的计数。