On the recommended hardware enPortal should support 100-200 concurrent user sessions depending on how active / how many simultaneous requests are made overall.
As with any Java application performance is greatly impacted if there is insufficient memory and greater amounts of CPU time is given up trying to free memory until the point it becomes too slow and OutOfMemoryErrors occur.
While it's possible to profile, analyse and determine the ideal amount of memory to allocate this can be a lengthy process.
As a general rule, if experiencing performance issues and/or out of memory errors then increase the memory allocated to Java. If memory usage stays well within the allocated maximum memory and performance is still an issue then the performance issues could be elsewhere.
For more information on configuring enPortal's memory parameters refer to the Memory Configuration page.
If memory is not an issue but CPU utilization is constantly high then enPortal may not be able to cope with the load. enPortal will distribute the load across multiple CPU cores so allocating additional CPUs or migrating to a faster/better system will help. Another option is horizontal scaling of the system (see Scaling enPortal below).
Also, if enPortal is sharing the system with other processes then monitoring will be needed to determine what is using the resources.
3. Scaling enPortal
Scaling enPortal beyond a single server is supported with the ideal configuration being a load-balanced cluster. As the load on enPortal is directly related to the demand (concurrent users) then clustering provides a linear way to scale and service additional concurrent users.
For more information please refer to the Clustering & Failover guide.