Table of Contents |
---|
...
Single server
Hardware
- Ubuntu 14.04.3 LTS (trusty)
- 1 x Intel(R) Xeon(R) CPU E5-1630 v3 @ 3.70GHz
- 64Gb memory
- disk SATA 200Gb, cache read: 11641.27 MB/sec, buffered: 56.08 MB/sec
Software
Nuxeo CAP 6.0
Jvm options: JAVA_OPTS=-Xms1024m -Xmx2048m -Dfile.encoding=UTF-8 -Dmail.mime.decodeparameters=true -Djava.util.Arrays.useLegacyMergeSort=true -Xloggc:${nuxeo.log.dir}/gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
JMX activated for Monitoring (only for benchmark with debugging for health constants)
ACLOptimization = false (only for benchmark)
- Full-indexing = false (only for benchmark)
- NX-Quota = true
PostgreSQL
(PostgreSQL) 9.3.9
postgresql-9.2-1002.jdbc4.jar
- pg_clt options Empty(changed into postgresql.conf)
- default
- configuration from Nuxeo benchmark: --effective_cache_size=16GB --shared_buffers=10GB --max_prepared_transactions=128 --work_mem=64MB --maintenance_work_mem=1GB --wal_buffers=24MB --checkpoint_completion_target=0.8 --checkpoint_segments=32 --checkpoint_timeout=15min --default_text_search_config=pg_catalog.french --fsync=off --full_page_writes=off --log_min_duration_statement=80ms --log_rotation_size=100MB --synchronous_commit=off --track_activities=on --track_counts=on --log_line_prefix='%t [%p]: [%l-1] ' --port=5436 --max_connections=64 --random_page_cost=2
- Analysis: https://wiki.postgresql.org/wiki/Performance_Analysis_Tools
Tools
JMeter 2.13 to make stress test: GUI & REST (source: nuxeo-bench-jmeter.jmx)
Memory: -Xms=1g -Xmx=2g
jvisualvm to monitoring JVM
powa (http://dalibo.github.io/powa/) to monitoring PostgreSQL
...
Transactions per second | Hits per second | Response time vs Threads |
---|---|---|
40/90/30
Transactions per second | Hits per second | Response time vs Threads |
---|---|---|
50/120/50
Transactions per second | Hits per second | Response time vs Threads |
---|---|---|
Postgres Read/Write
Query per second | Blocks per second |
---|---|
Configuration b)
- PostgresSQL with pg_ctl options = '--effective_cache_size=16GB --shared_buffers=10GB --max_prepared_transactions=128 --work_mem=64MB --maintenance_work_mem=1GB --wal_buffers=24MB --checkpoint_completion_target=0.8 --checkpoint_segments=32 --checkpoint_timeout=15min --default_text_search_config=pg_catalog.spanish --fsync=off --full_page_writes=off --log_min_duration_statement=80ms --log_rotation_size=100MB --synchronous_commit=off --track_activities=on --track_counts=on --log_line_prefix='%t [%p]: [%l-1] ' --port=5433 --max_connections=64 --random_page_cost=2'
- ACL optimization = false
- full-text indexation = false
- Quota-active = false
...
Transactions per second | Hits per second | Response time vs Threads |
---|---|---|
40/90/30
Transactions per second | Hits per second | Response time vs Threads |
---|---|---|
50/120/50
Transactions per second | Hits per second | Response time vs Threads |
---|---|---|
Postgres Read/Write
Query per second | Blocks per second |
---|---|
Scenario 2: Document creation (REST API with automation)
...
NOTE: In 50/120/50 test, benchmark detect a detects vcs pool is fully used. Solved with change pool to 100 into db and vcs values, with 450 threads in server.xml in HTTP connector.
...
Transactions per second | Transaction throughput vs Threads | Hits per second | Response time vs Threads |
---|---|---|---|
50/120/50
Transactions per second | Transaction throughput vs Threads | Hits per second | Response time vs Threads |
---|---|---|---|
...
- Import documents:
- Before:
- Check memory, pool and threads into nuxeo.conf and server.xml.nxftl.
- Tune PostgreSQL server into postgresql.conf file with scenario parameters.
- Disable ACL optimization
- Disable fulltext indexing into repository
- Uninstall plugin quota (if it is enabled and installed)
- Tools recommendations
- After:
- Enable ACL optimization
- Execute: SELECT nx_rebuild_read_acls();
- Enable fulltext-indexing into repository
- Install and enable plugin quota, if it is necessary.
- Enable ACL optimization
- Before:
...