This article documents a common performance issue related to Insufficient Resources within Liferay DXP 7.0. Read below for the necessary information about this issue and how to navigate through it.
Resolution
Insufficient System Resources
Often, servers have to multi-task because they are running not just a Liferay platform, but other applications as well. For example, sometimes the database is on the same machine or a web server. Other times the server may be hosting other applications, such as Elasticsearch.
In an insufficient system resources situation, this is when the application is slow. This does not happen because the application is actually slow, but because it is not getting all the resources that it needs from the underlying server. In other words, it has to wait for the processor, hard drive or network to be able to continue serving individual requests.
One indicator is when the server's CPU has a high utilization but there is no sign of activity in thread dumps or according to pidstat
.
Real time > sys + usr time
One of the other indicators that the Liferay platform is waiting for resources is if we see that 'real' time is higher than usr
and sys
combined.
For example:
[Times: user=0.20 sys=0.01, real=1.2 secs]
Normally, real time is less than user and sys combined, as it measures wall time whereas usr
and sys
measure cpu time. If we have a process that spends 1 second in 4 processes, then it is possible that usr
time will be 4s whereas real stays at 1s. We can see this kind of information from garbage collector logs or pidstat
. .
Solution
System Administrators should investigate server performance, specifically what other processes are running and how much resources they are consuming. Lastly, consider whether other applications can be moved to different servers.