For up-to-date product documentation, see the IBM MobileFirst Foundation Developer Center.
System requirements
MobileFirst Analytics Server uses an embedded Elasticsearch library for the data store and cluster management. Because it intends to be a highly performant in-memory search and query engine, requiring fast disk I/O, we must follow some production system requirements. In general, you are most likely to run out of memory and disk (or discover that disk I/O is your performance bottleneck) before CPU becomes a problem. In a clustered environment, we want a fast, reliable, co-located cluster of nodes.
Operating system
- CentOS/RHEL 6.x/7.x
- Oracle Enterprise Linux 6/7 with RHEL Kernel only
- Ubuntu 12.04/14.04
- SLES 11/12
- OpenSuSE 13.2
- Windows Server 2012/R2
- Debian 7
JVM
- Oracle JVM 1.7u55+
- Oracle JVM 1.8u20+
- IcedTea OpenJDK 1.7.0.55+
Hardware
- RAM: More RAM is better, but no more than 64 GB per node. 32 GB and 16 GB are also acceptable. Less than 8 GB requires many small nodes in the cluster, and 64 GB is wasteful and problematic due to the way Java™ uses memory for pointers.
- Disk: Use SSDs when possible, or fast spinning traditional disks in RAID 0 configuration if SSDs are not possible.
- CPU: CPU tends not to be the performance bottleneck. Use systems with 2 to 8 cores.
- Network: When we cross into the need to scale out horizontally, you need a fast, reliable, data center with 1 GbE to 10 GbE supported speeds.
Hardware configuration
- Give your JVM half of the available RAM, but do not cross 32 GB
- Set the ES_HEAP_SIZE environment variable to 32g.
- Set the JVM flags by using -Xmx32g -Xms32g.
- Turn off disk swap. Allowing the operating system to swap heap on and off disk significantly degrades performance.
- Temporarily: sudo swapoff -a
- Permanently: Edit /etc/fstab according to the operating system documentation.
- If neither option is possible, set the Elasticsearch option bootstrap.mlockall: true (this value is the default in the embedded Elasticsearch instance).
- Increase the allowed open file descriptors.
- Linux typically limits a per-process number of open file descriptors to a small 1024.
- Consult your operating system documentation for how to permanently increase this value to something much larger, like 64,000.
- Elasticsearch also uses a mix of NioFS and MMapFS for the various files. Increase the maximum map count so plenty of virtual memory is available for mmapped files.
- Temporarily: sysctl -w vm.max_map_count=262144
- Permanently: Modify the vm.max_map_count setting in your /etc/sysctl.conf.
- If we use BSDs and Linux, ensure that your operating system I/O scheduler is set to deadline or noop, not cfq.
Parent topic: MobileFirst Analytics Server installation guide