Hi,

I am setting up a production deployment of Apache Guacamole and am seeking
guidance on optimizing memory allocation, particularly concerning the guacd
component, for high concurrent user loads.

*Our Production Environment:* We are provisioning two Azure Standard E8as
v5 virtual machines, each with:

   -

   *8 vCPUs*
   -

   *64 GiB of RAM*

*Our Goal:* Each of these servers needs to reliably support *1000
concurrent RDP sessions at peak time, traffic will be less after hours.*

*Observed guacd Memory Behavior (Critical Concern):* During our testing on
similar server specifications, we've observed that guacd appears to operate
in a multi-process mode, where each active Guacamole session (specifically
RDP) seems to correspond to a separate guacd child process.

Example:
[image: image.png]


>From btop monitoring, we've seen individual guacd child processes consuming
between *70MB and 120MB of RAM per session*.

*The Challenge:* If this per-process memory consumption scales linearly,
then 1000 concurrent RDP sessions would require guacd alone to consume
approximately *70 GiB to 120 GiB of RAM* (1000×70MB=70 GiB to 1000×120MB=120
 GiB).

This projected guacd memory demand significantly exceeds the total 64 GiB
of RAM available on each of our target production servers. This raises a
major concern about potential memory exhaustion, heavy swapping, and
instability under full load, leaving little to no memory for the Tomcat
application server, the operating system, Nginx (our reverse proxy), and
other essential system processes.

*Our Current Tomcat Memory Allocation (Planned):* We had initially planned
to allocate a significant portion of memory to Tomcat for high concurrency,
with settings like: CATALINA_OPTS='-Xms16384M -Xmx32768M -server
-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200
-XX:+HeapDumpOnOutOfMemoryError' However, this 32 GiB maximum for Tomcat
becomes untenable if guacd requires 70 GiB+ on the same 64 GiB server.

*Questions for Guacamole Support:*

   1.

   *guacd Scaling Confirmation:* Can you confirm if guacd is indeed
   designed to fork a separate process for each RDP session, and if the
   observed per-process memory consumption (70-120MB) is typical for active
   RDP sessions?
   2.

   *Memory Sizing Recommendations:* What are your official memory sizing
   recommendations for guacd per active RDP session when planning for high
   concurrency (e.g., 1000+ sessions)?
   3.

   *guacd Optimization:* Are there any recommended guacd configuration
   options or best practices to optimize its memory footprint for high
   concurrent RDP remote app sessions, particularly if there are ways to
   enable a more "threaded" or shared-memory model rather than a strict
   per-process model?
   4.

   *Architectural Guidance:* Given our target of 1000 concurrent RDP
   sessions and the observed guacd behavior, what is your recommended
   architectural approach for these servers? Should we:
   -

      Increase the RAM on our servers significantly (e.g., to 128 GiB or
      256 GiB)?
      -

      Plan for a much larger number of smaller 64 GiB servers, each
      handling a reduced number of concurrent sessions (e.g., 200-300 sessions
      per server)?
      -

      Would it be necessary to provide a large chunk of memory for tomcat ?

We are keen to ensure a stable and high-performing Guacamole environment
for our users. Any insights or official documentation links regarding guacd's
memory scaling for large deployments would be greatly appreciated.

Thank you for your time

Regards
Gihan

Reply via email to