still new to moodle. so may be wrong in addressing your issue... with that said, others are more on track to finding details of what to look for. if it is moodle code itself and database calls. then... i am looking more at that in this post.
what would it take to disable extra blocks... extra filters, etc....
from looking at moodle code from what i can understand, it loads everything up to "courses", and then course formats begin pulling up sections, and then each section individual modules (activities / resources)
---limiting amount of courses, ((getting old courses no longer used, off the main server and to say a backup server))
---reduce amount of sections that are shown in a course. "less sections to go through, and finding individual things per user" instead of having all the sections visible, including hidden sections. switch to a course format that only displays 1 section at a time possibly.
---reducing amount of activities / resources displayed in a section. if it is test day/ week, get teachers to hide all sections, exception current day if possible.
---disable filters and extra plugins if possible. passing everything that is displayed through multi filters = cpu crunch time.
---disable blocks, that are not needed. less code to search for permissions and personal data for given user.
cache length before coming stale... and having to rebuild cache info... cache helps speed things up... and that maybe issue. and bunch of extra database calls are being done. during the initial few minutes. and after the given time the cache info is finally built up enough and everything begins to run smoothly
clean up front page, to min amount of what is shown, when students clicks "login" that next page keep reduce clutter. or more static content possibly. or let the students go directly into course. without having to do multi clicks through pages to get to course.
ya need stats, of what is going on, so you have data that you can use and look at and find out were the bottle necks are. until then... it is just pure luck guessing.