Hi all,

I'm currently running the Guacamole client on a Linux server that=E2=80=99s
expected to handle over *1,000 concurrent RDP sessions*. Each server has *8
vCPUs and 64 GB of RAM*, and we have *two nodes* configured in total. We're
currently in the testing phase.

To prepare for production load, I'm looking for *best practices to optimize
Tomcat for high performance and stability*. The last thing we want is for
the JVM to run out of memory during peak usage.

If anyone has tuned Tomcat in a similar high-load Guacamole deployment (or
any large WebSocket-heavy application), I=E2=80=99d greatly appreciate any
insights, tuning tips, or lessons learned.

below is the app versions I have
Server version: Apache Tomcat/9.0.99
Server built:   Feb 4 2025 20:08:08 UTC
Server number:  9.0.99.0
OS Name:        Linux
OS Version:     6.11.0-1018-azure
Architecture:   amd64
JVM Version:    21.0.8+9-Ubuntu-0ubuntu124.04.1
JVM Vendor:     Ubuntu


i have below config inplace for tomcat service.

[Unit]
Description=3DApache Tomcat Web Application Container
After=3Dnetwork.target

[Service]
Type=3Dforking

Environment=3DJAVA_HOME=3D/usr/lib/jvm/java-1.21.0-openjdk-amd64
Environment=3DCATALINA_PID=3D/opt/tomcat/temp/tomcat.pid
Environment=3DCATALINA_HOME=3D/opt/tomcat
Environment=3DCATALINA_BASE=3D/opt/tomcat
Environment=3D'CATALINA_OPTS=3D-Xms16384M -Xmx32768M -server -XX:+UseG1GC
-XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=3D200
-XX:+HeapDumpOnOutOfMemoryError'
Environment=3D'JAVA_OPTS=3D-Djava.awt.headless=3Dtrue
-Djava.security.egd=3Dfile:/dev/./urandom'

ExecStart=3D/opt/tomcat/bin/startup.sh
ExecStop=3D/opt/tomcat/bin/shutdown.sh

User=3Dtomcat
Group=3Dtomcat
UMask=3D0007
RestartSec=3D10
Restart=3Dalways
LimitNOFILE=3D65535

[Install]
WantedBy=3Dmulti-user.target

Reply via email to