This section describes recommended performance tuning configurations to optimize WSO2 BAM. It assumes that you have set up WSO2 BAM on Unix/Linux, which is recommended for a production deployment.
The below parameter values are just examples. They might not be the optimal values for the specific hardware configurations in your environment. Therefore, carry out load tests on your environment to tune WSO2 BAM accordingly.
Hadoop and Cassandra settings
If you manage a high volume of data with high concurrency, use a distributed WSO2 BAM setup. Performance tuning depends on the data volume handled by the server and server hardware configuration etc. Following are some key recommendations.
Tuning receiver nodes
-Xms1024m -Xmx1024m -XX:MaxPermSize=512m
-Change the /etc/security/limits.conf
---- soft nofile 4096
---- hard nofile 65535
Tuning Analyzer nodes:
-Xms1024m -Xmx1024m -XX:MaxPermSize=512m
Tuning Dashboard nodes:
-Xms1024m -Xmx1024m -XX:MaxPermSize=512m
There is no much work in Analyzer and Dashboard nodes therefore we don't need much tuning.
Hadoop nodes:
Recommended OS: Linux
Storage capacity of each node should have at-least 10GB
Network bandwidth is recommended to have at-least 100 Mbps.
set hadoop.root.logger=ERROR
Other optimization depends on their data volume and Hardware configuration. More information for performance tuning in Hadoop cluster can be found here [2]
Cassandra nodes:
Make sure your commit log and data dirs (sstables) are on different disks.
Set the Heap memory as below.
System Memory --------- Heap Size
Less than 2GB --------- 1/2 of system memory
2GB to 4GB --------- 1GB
Greater than 4GB --------- 1/4 system memory, but not more than 8GB
Set following configuration in cassandra.yaml according to your hardware resources.
-concurrent_reads
-4 * no of cores.
-concurrent_writes
-8 * no of CPU cores
More advance tuning you can refer cassandra documentations [3]