Guacamole System Resource requirements for better performance

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Guacamole System Resource requirements for better performance

jinesh
Hi

I would like to know the System requrements for Guacamole server to handle a
certain amount of load. I want to configure my instance type based on a
given load matrix, for better performance.
My guacamole setup is facing CPU choking issue from guacd service.
Restarting the service each time is the only solution I have right now. This
happens when the number of active console connection reaches beyond 100.

Following are the areas I need more info,
1. Relation between number of connections and load, say /N/ number of active
consoles would consume /N/ percentage of RAM/CPU.
2. How console with rich UI or media would affect /guacd/ service or the
Server.
3. Scenarios where /guacd/ service would choke Guacamole server CPU
resource.
4. Will tomcat thread settings affect Guacamole performance.



--
Sent from: http://apache-guacamole-general-user-mailing-list.2363388.n4.nabble.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Guacamole System Resource requirements for better performance

mjumper
Administrator
On Thu, Jun 27, 2019 at 9:12 PM jinesh <[hidden email]> wrote:
Hi

I would like to know the System requrements for Guacamole server to handle a
certain amount of load. I want to configure my instance type based on a
given load matrix, for better performance.

In the load testing we performed at my day job, we found that you will generally need 1 core and 2 GB for every 25 concurrent users at peak. Exceeding that will not cause things to fail, but users may start to notice performance degradation. This is mainly relevant to the server/cluster hosting guacd. We did not encounter a need to increase resources for Tomcat or the web application, even after exhausting our ability to generate simulated load (~2000 users).

The above test was performed by having a small set of actual test users interact with their connections normally while an independent set of servers with simulated users was increased in size. The simulated users generated load by performing a repeated series of tasks, leveraging Sikuli to interact with Guacamole as a normal user would. When the human users reported that performance seemed reduced, we noted the Guacamole server configuration and overall number of concurrent connections and restarted the test with a new scenario.

My guacamole setup is facing CPU choking issue from guacd service.

What do you mean by "CPU choking"?
 
Following are the areas I need more info,
1. Relation between number of connections and load, say /N/ number of active
consoles would consume /N/ percentage of RAM/CPU.

This is not how things work. A specific number of connections will not consume a static percentage of CPU, nor is CPU usage a reliable indicator of scalability.

Keep in mind that CPU usage is really an artificial metric. At any given time, a process is either running or it isn't. That usage percentage is a percentage of how much CPU time was used by a process over some interval, and really will not be helpful in gauging the performance of an individual connection. You can expect that the CPU behavior of each connection within guacd will be bursty, with that bursty curve smoothing out and becoming more predictable with increasing users. You can also generally expect that user behavior will be bursty, with the likelihood that multiple users will require a significant portion of CPU at the same time being relatively low. Even in the case where this does occur, the kernel does quite a good job of scheduling things.
 
2. How console with rich UI or media would affect /guacd/ service or the
Server.

I'm not sure what you are referring to by consoles with rich UI or media.

If your users will be attempting to watch video, etc., that will require more processing that typical desktop usage, but the server should still cope with this well. It depends on how likely that usage is across a sufficiently large number of users. If you are expecting all users to constantly watch video at the same time, you will definitely need more resources.
 
3. Scenarios where /guacd/ service would choke Guacamole server CPU
resource.

Please see above. I don't know what you mean by "CPU choking".

4. Will tomcat thread settings affect Guacamole performance.

Yes, in that they may affect the number of HTTP or WebSocket connections that Tomcat can hold open. If you believe Tomcat may be a bottleneck here, you should try switching Tomcat over to its NIO connector.

- Mike

Reply | Threaded
Open this post in threaded view
|

Re: Guacamole System Resource requirements for better performance

jinesh
Thank you for the detailed information on the topic. Performance issue on my
POC setup was the main reason to open this topic.
As I got clarity on most of the things you have explained, I will point out
areas where I need more info and you asked for clarity.


mjumper wrote
> What do you mean by "CPU choking"?

In my POC setup I observed that more than 100 concurrent user interaction
triggers high CPU usage in guacamole server. This higher usage remains even
after closing most of the remote console browser tabs (as of now I dont have
the exact figure). In these situations, guacd service restart brings the CPU
usage to normal. It was like closing of active consoles didnt free up the
CPU resource.
As I dont have an automated test setup to generate large number of users, I
relied on an experimental POC setup load, which dont have a huge number of
concurrent users all the time for a consistent testing.
As you mentined about the use of Sikuli to generate concurrent user load, I
have to look into it.


> I'm not sure what you are referring to by consoles with rich UI or media.

I was referring to Video with sound content mainly. Is there any difference
between GUI and Terminal console in resource consumption?

> If you are expecting all users to constantly watch video at the same
> time..

Yes I am expecting that kind of usecase and I want the Guacamole setup to
handle that. Speaking of 400-500 users with active user count goes beyond
200. These users will be mostly accessing UI consoles compared to Terminal.
So I am more concerned about Guacamole server configuration which can
support this much concurrent load. Need to plan future scalability options
as well.
If I have a performance matrix for a given hardware spec, I could set proper
scale up threshold for application level Guacamole load balancer to handle
future load as well, Need more info on load balancing methods I can try on
Guacamole server. Planned deployment environmnet is AWS EC2.
 
About Tomcat thread, with my initial tweaks I didnt observe any dramatic
change in performance with low number concurrent user count. I have to check
more into this.





--
Sent from: http://apache-guacamole-general-user-mailing-list.2363388.n4.nabble.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Guacamole System Resource requirements for better performance

jinesh
This post was updated on .


This is the POC design. All instances are AWS 'm5a.large' type.

I am getting differences in the number of established connections to port
8443 (Tomcat server) and total number of established connections to port
4822 (Guacd servers).

Is there any direct relation between number of Tomcat active sessions and
Guacd active console connections. Like if the user close an active console
window, respective Tomcat session and Guacd connection should be closed. I
dont have a clear picture on these things.



--
Sent from: http://apache-guacamole-general-user-mailing-list.2363388.n4.nabble.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@guacamole.apache.org
For additional commands, e-mail: user-help@guacamole.apache.org

Reply | Threaded
Open this post in threaded view
|

Re: Guacamole System Resource requirements for better performance

sciUser
This post was updated on .
May I ask why AWS?  I get platform of convenience, but that will cost you a
ton of money with their utility billing model.







-----
A Cybersecurity Enablement Company
We don't just run you through the motions, Our labs teach you how to think!
Known good Guacamole  installations

--
Sent from: http://apache-guacamole-general-user-mailing-list.2363388.n4.nabble.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@guacamole.apache.org
For additional commands, e-mail: user-help@guacamole.apache.org

A Cybersecurity Enablement Company
We don't just run you through the motions, Our labs teach you how to think!
Known good Guacamole installations