On Thu, Jun 27, 2019 at 9:12 PM jinesh <[email protected]> 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
