Not a developer? Go to MovableType.com

Plugin and Theme Directory

MemcachedLocal v0.01

By Hirotaka Ogawa
Posted September 30, 2007, in Rebuilding.

Details

A plugin for speeding up rebuilding templates under FastCGI environment. MemcachedLocal caches the MT internal data to the local memory, which allows you to speed up rebuilding templates especially under FastCGI environment.

Some MT objects have both of internal data and external meta data. $entry->commentcount and $entry->pingcount are typical examples of external meta data for MT::Entry object ($entry), which can be obtained not from 'mtentry' table but from foreign tables such as 'mtcomment', 'mttrackback', and 'mttbping'. It is natural to access the external meta data takes much longer times than to access the internal data.

To amortize such overhead and to be able to access external data as quickly as possible, MT4 has a ''two-level caching mechanism'' for external meta data of MT objects.

For L1-cache, MT4 associates external meta data with an MT object. First time you call $entry->comment_count, MT calculates its value by using foreign tables, and stores it as a property of the object. After that, you can reuse the value without any calcluation. It's good. But, L1-cache has the same lifetime of the target object, which could be shorter than the lifetime of the session. Because, everytime sessions are finished, almost all of MT objects could be destroyed from the local memory, of course with L1-cache. Therefore, we can't reuse L1-cache across multiple sessions or multiple FastCGI requests.

For L2-cache, on the other hand, MT4 stores external meta data to Memcached. External meta data are stored persistently in Memcached, so we can reuse them across multiple sessions. Of course, this feature is avaiable only when you employ Memcached, and L2-cache based on Memcached, which is an external process, is much slower than L1-cache stored inside the Perl runtime object.

To resolve such situations, MemcacheLocal plugin enables the L2-caching feature without using Memcached. Unlike Memcached-based L2-cache, MemcachedLocal stores the external meta data to the local memory and keeps them as long as the application instance lives. So, typically under the FastCGI environment, the application can reuse the external meta data without accessing foreign tables.

Compatibility

Movable Type versions: 4.3


Back

3 Comments

Timothy Appnel on October 2, 2007, 7:51 p.m. Reply

While memory caching will boost performance, this plugin seems to do the same thing as the built-in Data::ObjectDriver::Driver::Cache::RAM class that MT will use by default if memcached is not available.

Hirotaka Ogawa on October 2, 2007, 10:10 p.m. Reply

Memcached caches external meta data of MT objects as well as the contents of objects. For example, MTEntryCommentCount and MTEntryPingCount are typical examples of external meta data for MT::Entry.

This plugin allows you to cache such external meta data to the local memory without employing memcached.

I performed preliminary benchmarking tests by using mt-search.fcgi. You can see how much MemcachedLocal reduces the rendering times.

http://spreadsheets.google.com/pub?key=p05llkILPlbKaUHnM5dvdEA&gid=0

peterstrong

peterstrong on June 25, 2016, 5:06 a.m. Reply

tests by using mt-search.fcgi 192.168.1.1 192.168.1.1 192.168.1.1 192.168.1.1

Leave a Comment