-
Notifications
You must be signed in to change notification settings - Fork 496
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
Optimize/speed up the dataverse page #7804
Comments
|
(I'll get some accurate prod. db query counts for the page first, per issue #7802, before doing anything serious for this one) |
OK, this was supposed to be the "large" issue to track the overall resource use. I moved it temporarily out of the "in progress" column (back in May!!), and it was never moved back. I will be adding more info on said resource use... |
One important data point is that the SOLR search is still NOT a major resource draw or bottleneck there. |
Renamed the issue; will move this one back into in progress, to serve as the main/parent issue for the optimization work on the page. The associated PR will be tied to this issue. |
(I'm not sure I can move it into the "in progress" column myself? - but this is the one that was supposed to be there, instead of #7802. That was a sub-issue, that was moved to "in progress" temporarily and got stuck there) |
This is one isolated example of a pattern seen throughout our pages.
This is what it costs us in database queries alone (sorted):
There are obvious problems with the fragment above: a direct call to SystemConfig (instead of the SettingsWrapper) for the MetricsUrl; and, when the SettingsWrapper is called for isRsyncOnly, the code in there makes no attempt to cache the result, and (again) keeps calling SystemConfig directly; resulting in the repeated DownloadMethods queries above. Then there is also the part that the final lookup for the total number of guestbook entries is a fairly expensive query, that should probably be cached between pages too. (nobody needs that number to be up-to-date down to the second). But that's a different topic... |
To reiterate, the example above is not by any means a huge amount of waste by itself. It's just that, an example illustrating the dangers of putting methods that do any real work into JSF attributes; since they may end up getting evaluated multiple times. |
…ragment. (#7804) (may still rearrange the code before finalizing)
query that becomes unreasonably expensive for an installation with a lot of download/access activity. This solution is very efficient, but very PostgresQL-specific, hence the use of a stored function. (#7804)
query that becomes unreasonably expensive for an installation with a lot of download/access activity. This solution is very efficient, but very PostgresQL-specific, hence the use of a stored function. (#7804)
…d users" in the comments, for some reason #7804)
…xternal curation labels PR. (#7804)
…tedUsers, that does not require passing the command name as a literal string; the next step is to streamline the code duplicated between the 2 methods, similarly to how canIssueCommand() for regular users is organized in the wrapper - now that we can. (#7804)
Sub issue of #7788.
The dataverse page has objectively become very slow in production.
There are most definitely other things that can be slowing things down. But it is safe to say that the page is slow and resource-intensive by itself. (It is not exactly speedy even after a full restart).
Let's try to measure and quantify how much all the separate components are costing us there - db queries, solr queries, cpu cycles, waiting for other system resources, etc. - when serving our prod. data.
Some of it can be achieved by very low tech means, by inserting log statements in strategic places; but there are obviously more sophisticated ways to go about it.
The text was updated successfully, but these errors were encountered: