-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Frontend slow with many concurrent users #509
Comments
I'd vote for caching. |
+1 for caching too. It's the simplest
… |
After looking a but in more detail, it might not necessarily be the simplest, as the content of the problems page is different for each user (it shows events where one is signed up). So I'm not actually sure it's possible to efficiently cache it, unless some of that information is removed (and if it is, this performance issue will disappear anyway). Though caching would still be nice, particularly for static files in general. |
The exact same thing happened with the leaderboard table. I got rid of all user-dependent features (eg adding links to submissions of the user itself, even if the event is in competitive mode), and saved the table every time when it was updated. The complexity is that we need to know all events that change the page and trigger recomputing the table. In this case it would be adding problems and events, changing their statuses, and user sign ups. Do we know which query is taking up time? My suspicion is that it's the one that counts the number of submissions. If that's the case, we could take those stats off the landing page and put it on the event page, or add a statistics menu. Or just cache these numbers when users sing up and submit, and put them in the db. |
The server can be quite slow when accessed by multiple simultaneous users. For instance, here are load tests for a few pages with drill.
benchmark.yml
where
with 30 concurrent connections produces ,
so the issue seems to be particularly with the
/problems
page, I suspect because of of a DB query in a double loop here.The solutions could be to either,
The text was updated successfully, but these errors were encountered: