There is an architectural issue in the angular -> API design which means that a very large number of calls are made to the API for each page load.
This also makes the logs very noisy.
I have found 16GB lean for DSpace 7.5 where the database is on the same server. Tomcat needs about 3G, Each pm2 takes about 1G and SOLR and postgres chew up a lot. ClamAV daemon can chew up another 2G.
You might want to *reduce* the number of pm2 instances as you may be running low on memory. If your system is starting to swap this can slow things down terribly.
Adjust the robots to block entity paths and browse paths as robots can get lost in the DSpace search (a historical problem).
The following can help show where traffic is coming from
cat access.log | grep -v " 403 " | grep -v " 301 " grep -v " 408 " | cut -d " " -f 1 | sort | uniq -c | sort -n
Unfortunately you will find that a lot of the traffic is to the API server but you can identify bots this way.
fail2ban is a useful tool to block sim-behaving bots.
IMHO DSpace7 needs a bit more work architecturally to improve performance. That is understandable, it is huge (and impressive) migration that has been completed from DSpace 6. The new version is a very fresh and nice design, and the new API is nice.
Edmund Balnaves
Prosentient Systems