Hope this helps, this is how we get past the limitation of concurrent
connection users (CCU)
*1. CPU*
* *Minimum*: 8 vCPUs
* *Optimal*: 16-32 vCPUs depending on the intensity of user sessions
and the types of remote connections (e.g., RDP, VNC, SSH).
o Guacamole's backend services (Tomcat) and the guacd daemon
benefit from higher CPU cores for concurrent session management.
*2. RAM*
* *Minimum*: 16 GB
* *Optimal*: 32-64 GB
o Allocate memory based on the average session count and types of
connections (e.g., RDP requires more RAM per session compared to
SSH).
*3. Storage*
* *Disk Space*: Depends on log retention, drive sharing, and session
recording needs.
o *Base Installation*: ~10 GB
o Allocate additional space for:
+ Logs: 100 GB+ if extensive logging is enabled.
+ File sharing: Depends on user needs.
* Use SSDs for better performance.
*4. Network*
* *Bandwidth*: At least 1 Gbps is required for smooth operation; 10
Gbps is ideal for high-volume environments.
o Each session consumes about *50–150 kbps*, depending on the
resolution and activity level.
* Configure network settings for optimal performance:
o Ensure low latency for remote connections.
o Use load balancing if needed.
*5. Guacamole Configuration*
* *guacd Instances*: Each guacd instance can handle ~100–200
simultaneous sessions.
o Deploy multiple guacd instances using Docker or separate servers
for scaling.
o Use a load balancer (e.g., NGINX, HAProxy) to distribute traffic
among guacd instances.
*6. Tomcat (Guacamole Web Application) Tuning*
* *Heap Size*: Set the Java heap size for Tomcat:
-Xms8g -Xmx16g
This provides 8–16 GB of memory for the web application.
* *Thread Configuration*: Increase the number of threads in the Tomcat
connector configuration in server.xml:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="500"
minSpareThreads="100"
connectionTimeout="20000"
URIEncoding="UTF-8"/>
*7. Database*
* Guacamole stores user information and connection details in a
database (e.g., MySQL, PostgreSQL).
o Ensure proper indexing for large user bases.
o Use *read replicas* for load distribution if querying becomes heavy.
*8. Scalability*
* Use a *clustered architecture*:
o Multiple application servers for the Guacamole frontend.
o Multiple guacd servers distributed via a load balancer.
o Centralized database with high availability.
*9. Monitoring*
Implement monitoring tools to ensure resource utilization and
performance stability:
* *CPU and RAM*: Monitor usage and scale horizontally/vertically as
needed.
* *Session Metrics*: Monitor active session counts and peak usage times.
* *Logs*: Centralized logging (e.g., ELK stack) for analyzing errors
and trends.
*Example Deployment for 10,000 Users:*
* *Frontend Servers*: 4 (each with 8 vCPUs, 16–32 GB RAM).
* *guacd Servers*: 5–10 instances (each with 8 vCPUs, 16 GB RAM).
* *Database*: 1 primary + 1 replica (8 vCPUs, 32 GB RAM).
*Thank You*
Sean Hulbert
On 7/28/2025 3:22 AM, Tobias Feller | OPC wrote:
Hi Nick, Hi Alex,
@Nick
/"I've got a very similar environnent (guacd 1.5.5 on CentOS 7), and
it's been running for several weeks with hundreds of connections
having been made with it and I've not seen this issue."/
The Problem was for me only on *concurrent connections*. I'm running
also the 1.5.5 (docker) on our two guacamole (Loadbalanced) Hosts
since some month without problems. but with this 2 hosts we don't hit
the 60 concurrent connection limit at the moment.
Maybe i can try to do a test on another standby host that is using 1.6
and connect via some servers to 60 hosts at the same time.
Tobias
Am 28.07.2025 um 12:07 schrieb Alex_Yin:
I am running guacd 1.5.5 on Centos 7.9 vm
---- Replied Message ----
From Nick Couchman<[email protected]> <mailto:[email protected]>
Date 07/28/2025 17:54
To user<[email protected]> <mailto:[email protected]>
Subject Re: [EXT] SSH Connection Limit of 60 per guacd
On Mon, Jul 28, 2025 at 04:21 Alex_Yin <[email protected]> wrote:
Hello Julian,
Thank you for your suggestion. My problem is indeed very similar
to the link you provided. I also found this bug link
https://issues.apache.org/jira/browse/GUACAMOLE-1998. It seems
that it has not been solved yet. I found two solutions from these
two links:
1. Use version 1.5.3;
2. Build guacd image based on Debian 12.
I think I can try to roll back to version 1.5.3 first.
What version of guacd are you running when you encounter this?
Part of the challenge with the issue linked above is that we've been
unable to reproduce the issue reliably - I've got a very similar
environnent (guacd 1.5.5 on CentOS 7), and it's been running for
several weeks with hundreds of connections having been made with it
and I've not seen this issue. There must be some other factor
contributing to producing this behavior, we just haven't figured that
out, yet.
-Nick