Well, that is partially good news. Of course, if they had communicated with you, you could have watched the server during their test, and see if that ~100 students took the server to 80% CPU, or hardly caused any noticeable change load.
Tim Hunt
Posts made by Tim Hunt
As Marcus said, there were several MoodleMoot talks this year about large-scale exams, and they are more likely to be useful than my one from years ago. This si a good one
.
It does seem to be the way the users will plan things without thinking it through (or, more importantly, askign the people know the relevant information.) This is at least in part a result of our own success. If the system always seems to run relably, people don't even think it might not cope with what is thrown at it, and then you end up in a situation like this, which is not good.
It seems that the only baseline you have is your current use. You can get something from that. If you do a query like:
SELECT DATE_TRUNC('minute', TO_TIMESTAMP(timecreated)) AS minute, COUNT(1) num_pages
FROM mdl_logstore_standard_log
WHERE timecreated > 1609459200
GROUP BY minute
ORDER BY num_pages DESC
LIMIT 100
(That works in Postgres. It migth need some tweaking for MySQL/MariaDB.) That will cound the number of pages requested in your Moodle site each minute this year, and show you the top 100 of them. If you also have CPU and other performance monitoring of your server (e.g. using a tool like Nagios), then it is really great to combine the two. If you can see that the time you server was handling 2000 requests in one minute, the CPLU load was only 50%, then that is probably a safe level.
You could also add "AND component = 'mod_quiz'" to the WHERE clause, to see the most quiz-related load your system has handled.
Once you have that sort of base-line, you can start to do some back of the envelope calculations: 400 students attempting a quiz. Lets assume they only move to the next page every minute or so, if your system can handle 500 req per second or more, you might be OK. (But really, you would probably want to see a much bigger margin for error than that.)
Anyway, that is the best advice I can give to try to quantify the risks given what you have.
It does seem to be the way the users will plan things without thinking it through (or, more importantly, askign the people know the relevant information.) This is at least in part a result of our own success. If the system always seems to run relably, people don't even think it might not cope with what is thrown at it, and then you end up in a situation like this, which is not good.
It seems that the only baseline you have is your current use. You can get something from that. If you do a query like:
SELECT DATE_TRUNC('minute', TO_TIMESTAMP(timecreated)) AS minute, COUNT(1) num_pages
FROM mdl_logstore_standard_log
WHERE timecreated > 1609459200
GROUP BY minute
ORDER BY num_pages DESC
LIMIT 100
(That works in Postgres. It migth need some tweaking for MySQL/MariaDB.) That will cound the number of pages requested in your Moodle site each minute this year, and show you the top 100 of them. If you also have CPU and other performance monitoring of your server (e.g. using a tool like Nagios), then it is really great to combine the two. If you can see that the time you server was handling 2000 requests in one minute, the CPLU load was only 50%, then that is probably a safe level.
You could also add "AND component = 'mod_quiz'" to the WHERE clause, to see the most quiz-related load your system has handled.
Once you have that sort of base-line, you can start to do some back of the envelope calculations: 400 students attempting a quiz. Lets assume they only move to the next page every minute or so, if your system can handle 500 req per second or more, you might be OK. (But really, you would probably want to see a much bigger margin for error than that.)
Anyway, that is the best advice I can give to try to quantify the risks given what you have.
Well, the best thing that you can do is to test that your setup can handle it, It is not that hard to get JMeter or a similar load-testing tool to simulate 400 users attempting a quiz. (Although, it takes a bit of work - and you may need more than one computer sending requests to simulate 400 users. Make sure you are load-testing your server, not your internet connection 
You are right that smoothing out the initial peak of everyone starting is a good move. That makes a big difference.
If you are not already on Moodle 3.9 ... well I am not sure how much practice this performance improvement makes: MDL-67183, but it can't hurt.
I would say that if number of questions per page, makes a difference in whether you server can handle the load, or not, then you are far too near the limit of what your server can cope with for comfort. So, mostly make the decision based on what will be most convenient for your students. You want them to be able to concentrate on answering the questions, not the mechanics of navigating the quiz.
Having said that, I feel that all questions on one page is a big risk (even with autosave). If have questions you expect students to think about for mulitple minutes, then put them on a page on their own. If you have a bunch of related multi-choice questions you expect students to get through quickly, then I woudl group them into pages of about half-a-dozen.
I hope that helps.
Well, if there is on question per page, the students results are saved each time they move to the next page. Really odd that it is not showing up on your system even though it works on the Moodle demo site.
I think that the only way to be certain what each task does is to check the code. Where that screen shows a task name like \auth_db\task\sync_users, then you can find the code for that in auth/db/classes/task/sync_users.php. If you are lucky, there will be a comment at the top of that file saying what the task does. If you are unlucky, you well need to read the code.