Uploaded image for project: 'CritiqueBrainz'
  1. CritiqueBrainz
  2. CB-162

Performance problems related to MusicBrainz web service requests

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: High High
    • None
    • None
    • None
    • None

      Most pages need to load data from MusicBrainz. Stuff like release group info is need everywhere reviews are displayed. There are places which need artist info or search, but these are not as frequent as release groups.

      This dependency causes significant slowdown on pages that need to load a lot of data. Since there is no way to load multiple entities in one request from the web service, we have to make a lot of requests just to show several reviews. This is what happens when there's one user; under significant load website might become completely unusable.

      Current solution is to cache responses from MusicBrainz for 12 hours. Though, in practice it doesn't work very well. For example, if cache is empty and multiple users might try to load different pages of review browsing section (https://critiquebrainz.org/review/?page=330). We have over 330 pages with 27 reviews each (that would require making at least 27 separate requests to the web service).

      Wrapper for python-musicbrainzngs and other code related to this issue is located at https://github.com/metabrainz/critiquebrainz/blob/master/critiquebrainz/frontend/apis/musicbrainz.py

      So far I couldn't find a good solution for this issue. Any suggestions and ideas are welcome.

          [CB-162] Performance problems related to MusicBrainz web service requests

          Roman added a comment -

          Closing this since these problems should be fixed by directly accessing the MusicBrainz database. See CB-231.

          Roman added a comment - Closing this since these problems should be fixed by directly accessing the MusicBrainz database. See  CB-231 .

          Roman added a comment -

          One thing we can try to do is cache release group info forever and in certain places (like release group pages) check if it's time to invalidate it. This will at least reduce number of requests that we'll have to make on most pages after cache is filled up.

          Roman added a comment - One thing we can try to do is cache release group info forever and in certain places (like release group pages) check if it's time to invalidate it. This will at least reduce number of requests that we'll have to make on most pages after cache is filled up.

            Unassigned Unassigned
            roman Roman
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:

                Version Package