Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-45375

Allow multiple MUC instances on one memcached server using cachestore_memcache

    XMLWordPrintable

Details

    • Improvement
    • Resolution: Won't Fix
    • Critical
    • None
    • 2.5.5, 2.6.2, 2.6.5, 2.7.2, 2.8
    • Caching
    • MOODLE_25_STABLE, MOODLE_26_STABLE, MOODLE_27_STABLE, MOODLE_28_STABLE
    • MDL-45375_master
      1. Setup different memcache backends for different stores
      2. Don't use memcache store for high-purge caches
      3. Write a custom plugin which ignores purges at own risk
    • Moderate
    • Hide
      1. Setup different Moodles in the same memcache store
      2. Purge caches of one of the Moodles
      3. Confirm that the other Moodle has its cache intact
      4. Create a course (one section of the cache will be purged)
      5. Confirm that the whole cache is not being purged
      Show
      Setup different Moodles in the same memcache store Purge caches of one of the Moodles Confirm that the other Moodle has its cache intact Create a course (one section of the cache will be purged) Confirm that the whole cache is not being purged

    Description

      memecache_store::purge() calls Memcache::flush() which wipes everything stored on that memcache server, not just the one MUC cache you think you are purging.

      In Moodle 2.6, where modinfo is stored in MUC, this can cause big performance blips. (See the graph in http://tjhunt.blogspot.co.uk/2014/04/load-testing-moodle-262-at-ou.html)

      Worse, if you are storing user sessions in the same Memcache store as MUC data, this can cause everyone to be logged out.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              timhunt Tim Hunt
              Damyon Wiese Damyon Wiese
              Votes:
              13 Vote for this issue
              Watchers:
              21 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: