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