15. Benchmark
PHP Native PHP w/APC
Concurrency Level 10
Time taken for tests 60 seconds
Complete requests 298 914
Total transferred 643,149 bytes 1,962,675 bytes
HTML transferred 516,971 bytes 1,582,035 bytes
Requests per second 4.91 [#/sec] (mean) 15.21 [#/sec] (mean)
Time per request 2035.405 [ms] (mean) 657.623 [ms] (mean)
Time per request 203.541 [ms] 65.762 [ms]
(mean, across all concurrent requests)
Transfer rate 10.35 [KB/s] received 31.88 [KB/s] received
17. History
“Developed by Danga Interactive for
LiveJournal.com”
18. Memcached ?
• a distributed memory object caching system
with hash table
19. Memcached ?
• a distributed memory object caching system
with hash table
20. Memcached ?
• a distributed memory object caching system
with hash table
• a generic two stage hashing system (clients
and servers). Clients are written for specific
application languages. Server is written in C
21. Memcached ?
• a distributed memory object caching system
with hash table
• a generic two stage hashing system (clients
and servers). Clients are written for specific
application languages. Server is written in C
22. Memcached ?
• a distributed memory object caching system
with hash table
• a generic two stage hashing system (clients
and servers). Clients are written for specific
application languages. Server is written in C
• 85% of top 20 sites use memcached; 50%+ of
top 5k sites uses Memcached
23. Memcached ?
• a distributed memory object caching system
with hash table
• a generic two stage hashing system (clients
and servers). Clients are written for specific
application languages. Server is written in C
• 85% of top 20 sites use memcached; 50%+ of
top 5k sites uses Memcached
24. Why Memcached ?
• Scale-out
– Machine
– Process (Use different ports)
• Memory faster than Disk
• Allows for efficient use of your database
• Can utilize existing network
– Uses non-blocking network I/O (TCP/IP)
• Very flexible
• Client libraries in all major languages
27. “We use more than 800 servers supplying over
28 terabytes of memory to our users.”
“total throughput achieved is 300,000 UDP req/s”
by Paul Saab Saturday, December 13, 2008 at 2:43am
• 8-core machines
• 20-30% CPU usage.
• scale memcached to 8 threads on an 8-core system
• moved to UDP for get operations to reduce network traffic
http://www.facebook.com/note.php?note_id=39391378919
32. Coding ? (in PHP)
/* OO API */
$memcacheObj = new Memcache;
$memcacheObj->connect('memcache_host', 11211);
/* set */
$memcacheObj->set('key', 'data', MEMCACHE_COMPRESSED, 50);
/ * get w/single key */
$var = $memcacheObj->get('key');
/ * get w/multiple key */
$var = $memcacheObj->get(array('key1', 'key2'));
$memcacheObj->close();
33. CMS ?
• Drupal has Memcache API and Integration
http://drupal.org/project/memcache
• Wordpress has object cache
http://mohanjith.net/blog/2008/10/using-memcached-with-
wordpress-object-cache.html
36. Ref.
• Improving PHP Application Performance with APC
http://www.slideshare.net/vortexau/improving-php-application-
performance-with-apc-presentation
• PHP Accelerators : APC vs Zend vs XCache with Zend
Framework
http://blog.digitalstruct.com/2007/12/23/php-accelerators-apc-vs-zend-vs-
xcache-with-zend-framework/
• Scaling with memcached
http://www.slideshare.net/acme/scaling-with-memcached
• Gear6 and Scaling Website Performance: Caching Session and
Profile Data with Memcached
http://www.slideshare.net/gear6memcached/gear6-and-scaling-website-
performance-caching-session-and-profile-data-with-memcached