Are you planning on having all students write at the same time? If so, this is almost a worst-case scenario in terms of load on your server.
When a student starts a Gateway Quiz the system has to create a version of the quiz for that student, which involves a whole bunch of writes to the database, and then render all of the problems on the quiz. Because of the way the code is written this is handled serially by a single apache process. i.e. when a student clicks on "Take ... Test", an apache process is assigned, and that process can't serve any other pages until it has created the test and rendered all 50 problems. There are a couple of implications of this:
- If you have more students starting simultaneously than you have apache processes (as determined by MaxRequestWorkers in your apache configuration), then students will have to wait until previous requests have completed before their quiz will load. This in itself won't crash your server (assuming that you have enough memory for the number of processes), but it can mean long waits for pages to load. The one danger is students that get impatient and click reload, as this adds additional requests, which means even longer waits.
- A single apache process will be rendering all 50 problems for one student. Due to the memory leaks in problem processing, each problem increases the memory footprint of the apache process, so you could see the memory usage of apache processes ballooning very quickly. This can easily run your server out of memory.
Typically a WeBWorK server has apache configured so that MaxConnectionsPerChild is set to 50 or 100, which means that an apache process is killed after serving that many requests, and then a new process starts. This frees up the memory that is tied up by the memory leaks in problems rendered by that process. In a typical scenario (e.g. a server serving a mix of assignments and quizzes), the 50 requests served by a process would be mostly single questions, with the odd quiz mixed in. If everyone is starting the quiz at the same time, then a single process might have to handle several consecutive requests which ask it to render 50 problems, so you could see memory usage for apache processes that is significantly higher than what you normally see.
If you want to be safe about memory usage, then you can go to the extreme of setting MaxConnectionsPerChild to 1, which means that an apache process will be terminated after it serves a single request. This solves the issue of growing memory usage of these processes, but adds the processing overhead of having to start a new apache process for each request. If your server has sufficient processing power (no, I don't know what constitutes "sufficient" here), then this may be the way to go.
Of course all of this is somewhat vague, since it is notoriously hard to quantify exactly what the memory and processor usage is for specific actions in WeBWorK, but hopefully this gives you some ideas.