Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHP Performance with APC + Memcached

53,860 views

Published on

Published in: Technology

PHP Performance with APC + Memcached

  1. 1. PHP Performance w/APC + Memcached @FordAntiTrust thaicyberpoint.com thaithinkpad.com thaihi5.com
  2. 2. Cache Theory ?
  3. 3. Cache Theory ? Req 1 Check 2 Miss Compute Store 3 Cache 4 Hit Output Miss - [Store] - Hit
  4. 4. Type ? Fast Slow http://ralphlosey.files.wordpress.com/2007/06/ram.jpg http://www.pctechguide.com/images/31HardDrive.jpg
  5. 5. APC ? Alternative PHP Cache
  6. 6. Opcode Cache and Variables Cache Automatic update w/code changes Code not changes request
  7. 7. Free & Open Source
  8. 8. Simply Installation
  9. 9. PHP Flow Req • Scanning and Lexing (Plain Text to Tokens) • Parsing • Scanning • Lexing (Tokens to Expressions) • Parsing • Compilation • Compilation (Translated Expressions to Opcode) • Execution Execution (Opcode stacks are processed) Output
  10. 10. Normal PHP vs APC
  11. 11. Normal PHP vs APC Req • Scanning • Lexing • Parsing • Compilation Execution Output
  12. 12. Normal PHP vs APC Req APC hook • Scanning • Lexing • Parsing Miss • Compilation APC hook Store Opcode cache Execution Hit Output
  13. 13. Installation • Basic PECL (http://pecl.php.net) Conf – pecl install apc extension=apc.so apc.shm_segments=1 • Ubuntu apc.shm_size=256 – apt-get install php5-apc apc.optimization=0 apc.num_files_hint=2048 • Windows apc.ttl=3600 apc.user_ttl=3600 (http://pecl4win.php.net) apc.enable_cli=1 apc.max_file_size=1M – extension=php_apc.dll
  14. 14. 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
  15. 15. Memcached
  16. 16. History “Developed by Danga Interactive for LiveJournal.com”
  17. 17. Memcached ? • a distributed memory object caching system with hash table
  18. 18. Memcached ? • a distributed memory object caching system with hash table
  19. 19. 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
  20. 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. 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 • 85% of top 20 sites use memcached; 50%+ of top 5k sites uses Memcached
  22. 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. 23. 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
  24. 24. Limits (c/Hash Table) • Key : max 250 chars. • Values: max 1MB
  25. 25. “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
  26. 26. Architecture practical ? http://barry.files.wordpress.com/2007/04/new-servers-back-04-2007.jpg
  27. 27. Architecture practical ? “designing & implementing scalable applications with memcached and mysql” http://blog.thinkdiff.net/?p=419
  28. 28. Architecture practical ? http://blog.thinkdiff.net/wp-content/uploads/2009/02/memcache_22-02-2009.png
  29. 29. 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();
  30. 30. 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
  31. 31. code optimization is best
  32. 32. Discussion Q&A
  33. 33. 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
  34. 34. Ref. (2) • PHP: Memcache - Manual http://th.php.net/manual/en/book.memcache.php • http://danga.com/memcached/ • http://pecl.php.net/package/memcache • http://www.socialtext.net/memcached/
  35. 35. Thank you @FordAntiTrust http://www.slideshare.net/FordAntiTrust

×