How to assign more memory for the flush queue between memtable and sstable in Cassandra. I have getting timeout errors and the heap and young region usage seems to within limits. There is no other processing happening except Cassandra in the machine. Also how to find if any requests are dropped at the ethernet card and not by Cassandra. I use Cassandra Datastax 4.7 and Java 1.8.
How to change the flush queue size of cassandra
You can increase the number of flush writers by editing memtable_flush_writers
in your cassandra.yaml
file. See the related docs.
How to assign more memory for the flush queue between memtable and sstable in Cassandra.
You don't assign memory to a queue. You can only increase the threads for the queue. You can increase the memory for the JVM in it's entirety. Heap size for Cassandra is usually recommended to be 8GB though some will go higher with specific JVM tuning.
Also how to find if any requests are dropped at the ethernet card and not by Cassandra. Depending on your Consistency Level, your reads or writes may fail if not enough replicas acknowledge back.
If you're interested on network packets dropped specifically take a look at the output of:
# 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
keeps counts of packets that have errored out, been dropped, etc. at the NIC level.