We have been using RT for a number of years as part of a large (300+ student) engineering design course. One of the things that we use RT for is submitting students’ assignments and their resource materials for midterms and final exams.
Last year - using a Docker image based on Phusion Passenger and an untuned Postgres database - we had a catastrophic failure. Our students were attempting to upload very large attachments (contemporary students don’t seem to understand that files have a size and that photographs can be large) and it was timing out and failing and they were retrying … the net result was that they were filling up our database at something like 17GB per minute.
In our post-mortem we realized that (e.g.) the sessions table was growing faster than everything else and that that the attachments table wasn’t far behind. And that our Postgres installation wasn’t tuned properly at all. However we also saw that the server process also seemed to be spiked at-or-near 100% and that it looked like we weren’t getting multiple threads of execution.
To make matters “worse” we are running everything behind an Apache proxy that is using Shibboleth (SAML) for authentication and are using some custom code to auto-create users based on Shibboleth-set environment variables.
I get the impression from the Dockerfiles that I found that using Phusion may be overkill. I also get the impression that our use case may not be the best match for RT. But we really want to expose our students to a Ticketing system and we’ve had pretty good success with RT so far.
So my question is what the best combination of Docker images, servers, FastCGI, etc., to use given that we are trying to provide a class of 300 impatient and not terribly technically astute students with the ability to upload a rather silly amount of attachments without bringing the server down? This is running on a virtual server so we can do silly things with CPUs and memory, but I’m betting my basic system isn’t the best.
Thanks for any thoughts / help / support / suggestions / paths to pursue.