Repository navigation
Recommended ArcadeDB Configuration for High-Concurrency Production Workload #9391
Replies: 7 comments 4 replies
|
One concrete correction: in 26.10.1 the page-cache setting is arcadedb.maxPageRAM=1024The 26.10.1 configuration source defaults this to one quarter of the maximum heap, so with Also, the page cache is inside the JVM heap, so your configuration isn't 4 GiB heap plus another 1 GiB cache. Leave container memory headroom for non-heap allocations. Before reducing from eight cores to four, benchmark your representative workload at bounded client concurrency, recording throughput, p95 latency, GC time and transaction retries. Check expensive queries with What is the container's memory limit, and could you share representative queries, the read/write mix, and your throughput/latency target? Those would make a sizing recommendation much more concrete. |
|
@keremoktener Currently, we are running ArcadeDB with the following configuration: IMAGE=alineconsulting/arcadedb:26.10.1-061026
JAVA_OPTS_VAL='-XX:+UseZGC -XX:+ZGenerational -Djava.net.preferIPv4Stack=true -Darcadedb.server.rootPassword=***** -Darcadedb.server.plugins=Postgres:com.arcadedb.postgres.PostgresProtocolPlugin,Bolt:com.arcadedb.bolt.BoltProtocolPlugin -Darcadedb.postgres.port=5432 -Darcadedb.bolt.port=7687'
SETTINGS_VAL='-Darcadedb.server.mode=production -Darcadedb.txWalFlush=1 -Darcadedb.maxPageRAM=1024 -Darcadedb.bucketDefaultPageSize=65536 -Darcadedb.dumpConfigAtStartup=true -Darcadedb.studio.enabled=true'
docker run \
--name="arcade" \
--cpus="8" \
--memory="8589934592" \
--restart unless-stopped \
--volume /data/limadata/arcadedb/replication:/home/arcadedb/replication \
--volume /data/limadata/arcadedb/databases:/home/arcadedb/databases \
--volume /data/limadata/arcadedb/config:/home/arcadedb/config \
--volume /data/limadata/arcadedb/log:/home/arcadedb/log \
--volume /data/limadata/arcadedb/backups:/home/arcadedb/backups \
--env "ARCADEDB_OPTS_MEMORY=-Xms4G -Xmx4G" \
--env "JAVA_OPTS=$JAVA_OPTS_VAL" \
--env "ARCADEDB_SETTINGS=$SETTINGS_VAL" \
--network=bridge \
--workdir=/home/arcadedb \
-p 2424:2424 \
-p 2480:2480 \
-p 5433:5432 \
-p 7687:7687 \
--expose=27017 --expose=50051 --expose=6379 --expose=8182 --expose=9998 --expose=9999 \
--runtime=runc \
--detach=true \
"$IMAGE" ./bin/server.shThe container is limited to 8 GiB RAM and 8 CPUs, with the JVM heap configured as: We have also configured: Could you please confirm whether this is an appropriate configuration for our 8 GiB container, particularly the combination of Also, are there any other ArcadeDB memory-related settings or configuration changes you would recommend for this setup to avoid unnecessary memory pressure while maintaining good query performance? Thank you. |
|
Thanks for the clarification. We checked the Java version inside our custom ArcadeDB 26.10.1 image. It is: Our custom image is based directly on: FROM arcadedata/arcadedb:26.10.1The only customization is adding The current runtime configuration is: We will keep these limits initially and collect representative workload metrics including concurrency, read/write mix, throughput, p95 latency, post-GC heap usage, and peak container memory. Regarding Thanks for the guidance. |
|
Hi ArcadeDB Team, My workload can consist of a combination of read and update queries, with multiple queries potentially running in parallel. In a real-world scenario, this could be similar to multiple users accessing the same feature simultaneously, resulting in several concurrent database operations. I am attaching a few sample queries for reference — two are read queries and the others are update queries. Query1 Query2 Query3 As part of my testing, I executed Query 1 concurrently 50 times across multiple threads. During this test, I observed an OutOfMemory (OOM) condition. There was also a significant increase in system load at the same time, and the OOM occurred while the system was under this high concurrent workload. I wanted to share this additional information to provide more context around the workload and help understand whether the observed behavior is related to the query structure, concurrency, or ArcadeDB configuration. Thanks, |
|
We looked at where Query1's CPU goes, on a synthetic copy of this shape (10,000 In the same copy, the four sources computed as |
Uh oh!
There was an error while loading. Please reload this page.
Hello ArcadeDB Team,
I have a system where multiple jobs can run simultaneously, and these jobs may generate a heavy workload with many parallel requests(Read/Write) accessing the ArcadeDB database.
Currently, I have configured my Docker-based ArcadeDB-26.10.1 deployment with the following settings:
ARCADEDB_OPTS_MEMORY=-Xms4G -Xmx4G
arcadedb.server.mode=production
arcadedb.pageCacheSize=1073741824
arcadedb.txWalFlush=1
arcadedb.bucketDefaultPageSize=65536
The system is currently assigned 8 CPU cores.
I would like to understand whether this configuration is suitable for a production environment with a high level of parallel and potentially heavy database activity.
I have observed that, at times, the CPU utilization reaches almost 100% across all 8 CPU cores. Since the expected workload may increase further, I would like to understand the recommended configuration and sizing for this type of workload.
Could you please advise on the following?
Are the above ArcadeDB and JVM settings appropriate for a production system with heavy concurrent workloads?
Are there any specific configuration parameters that you would recommend tuning for high parallelism?
Is 4 GB of JVM heap and 1 GB page cache sufficient, or should these be increased based on the workload?
How many CPU cores would you generally recommend for a system handling multiple concurrent, CPU-intensive database jobs?
Is there a recommended CPU/memory ratio or sizing guideline for ArcadeDB that we can use when planning for increased load?
Since 8 CPU cores is the maximum I can allocate to this system, and I would actually prefer to reduce the CPU allocation if possible(maybe 4 cores), what would you recommend as a reasonable CPU configuration for this workload? If the CPUs are consistently highly utilized, should I first tune any ArcadeDB/JVM/database settings to improve CPU efficiency, or is the high CPU utilization expected for this type of parallel workload?
Any recommendations regarding CPU, memory, page cache, WAL, concurrency, and other relevant production settings would be greatly appreciated.
Thank you again for your continued support.
Regards,
Harinath
All reactions