Milestones Continuous Workbench Misc Custom Infrastructure Scenarios 11B Benchmarks Request Password

Infrastructure

Benchmarks after 2021

Nuxeo benchmark infrastructure runs on Google Kubernetes Engine (GKE).

The benchmark infrastructure is composed of:

Everything is deployed with the help of Helmfile and Helm Charts, the definition and settings are accessible here for the benchmark environment.

MongoDB and Elasticsearch are running on a dedicated Kubernetes node.

There’s one Kafka node for one Nuxeo node, both running on the same dedicated Kubernetes node.

Each Kubernetes node is composed of GKE e2-standard-16 with 16 vCPU and 64 GB Memory.

The benchmark is driven by continuous integration jobs (Jenkins).

Here is a list of tools used to perform the benchmark:

Benchmarks before 2021

Nuxeo benchmark infrastructure runs on Amazon Web Service (AWS). Benchmarked Architecture

The benchmark infrastructure is composed of:

This is a mix of static and dynamic parts:

All these nodes are setup according to our recommendation.

The benchmark is driven by continuous integration jobs (Jenkins).

Here is a list of tools used to perform the benchmark:

Amazon ec2 instance type

All machines are on Amazon and runs on the same availability zone (AZ).

Node ec2 instance type
Database c4.2xlarge
Nuxeo c4.xlarge
Elasticsearch c4.xlarge
Redis cache.m3.large
Kafka c4.xlarge
Jenkins slave c3.xlarge

Running a benchmark with the default setting requires 8 machines:

And when using Kafka there is an additional machine.

Configuration

Operating system used:

Nuxeo

The number of nodes in the Nuxeo Cluster can be configured (default is 2)

The Nuxeo is installed using a zip archive, there are additional packages installed:

In addition to the backend template, the perf template is used. This template is provided in the default distribution and rely on Elasticsearch for fulltext search and most of the page provider.

Nuxeo run with the latest Oracle JVM 1.8, the heap size is set to 80% of total memory (5.84g for a C4.xlarge with 7.5g), the flight recoder option is active:

JAVA_OPTS=-server -Xms5984m -Xmx5984m -Dfile.encoding=UTF-8 -Dmail.mime.decodeparameters=true -Djava.util.Arrays.useLegacyMergeSort=true -Xloggc:"/opt/nuxeo/logs/gc.log" -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Dcom.sun.management.jmxremote.autodiscovery=true -Dcom.sun.management.jdp.name=Nuxeo -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true

Elasticsearch

Create a cluster of 3 nodes using the proper Elasticsearch version.

The heap size is set to 50% of the available memory (3.75g)

Nuxeo uses the perf template that set elasticsearch.index.translog.durability=async for all indexes (since 2018-08-13).

Binary Storage: Amazon S3

Default S3 bucket.

Load balancer: Amazon ELB

HTTP Listener

 Stickiness: LBCookieStickinessPolicy, expirationPeriod='86400'

Health check

Redis: Amazon Elasticache

Elasticache cluster with a single node using Redis 2.8.

Kafka

Since 2018-08-22 we can run reference benchmark with Kafka.

Nuxeo is then configured to leverage Kafka instead of Redis:

Also for MongoDB we switch the KeyValueStore from Redis to MongoDB, this way Redis can be completely disable.

The Kafka cluster is a single node (definitely not a production setup):

Databases

Database are setup using the recommended setup and tuning from our documentation.

PostgreSQL 9.4

Default setup for a 16g server:

Oracle 12

Default setup.

SQL Server 2012 (mssql)

Default setup.

MongoDB 8.2

Default setup.

Change log

The configuration must be updated to follow new dependencies visit the Change log page for more information.