PHP Performance
                     w/APC + Memcached



@FordAntiTrust
thaicyberpoint.com
thaithinkpad.com
thaihi5.com
Cache Theory ?
Cache Theory ?

             Req
                               1 Check

                      2 Miss
        Compute

   ...
Type ?
                    Fast                                Slow




http://ralphlosey.files.wordpress.com/2007/06/ram....
APC ?

Alternative PHP Cache
Opcode Cache and Variables Cache




           Automatic update w/code changes




Code not changes request
Free & Open Source
Simply Installation
PHP Flow
                                             Req
• Scanning and Lexing
  (Plain Text to Tokens)

• Parsing       ...
Normal PHP vs APC
Normal PHP vs APC
                  Req


            • Scanning
            • Lexing
            • Parsing
            • ...
Normal PHP vs APC
             Req
           APC hook

       • Scanning
       • Lexing
       • Parsing           Miss
...
Installation
• Basic PECL
  (http://pecl.php.net)
                               Conf
  – pecl install apc           exten...
Benchmark
                                         PHP Native               PHP w/APC
Concurrency Level                   ...
Memcached
History



    “Developed by Danga Interactive for
             LiveJournal.com”
Memcached ?
• a distributed memory object caching system
  with hash table
Memcached ?
• a distributed memory object caching system
  with hash table
Memcached ?
• a distributed memory object caching system
  with hash table
• a generic two stage hashing system (clients
 ...
Memcached ?
• a distributed memory object caching system
  with hash table
• a generic two stage hashing system (clients
 ...
Memcached ?
• a distributed memory object caching system
  with hash table
• a generic two stage hashing system (clients
 ...
Memcached ?
• a distributed memory object caching system
  with hash table
• a generic two stage hashing system (clients
 ...
Why Memcached ?
• Scale-out
  – Machine
  – Process (Use different ports)
• Memory faster than Disk
• Allows for efficient...
Limits (c/Hash Table)
• Key : max 250 chars.
• Values: max 1MB
“We use more than 800 servers supplying over
     28 terabytes of memory to our users.”

     “total throughput achieved i...
Architecture practical ?




http://barry.files.wordpress.com/2007/04/new-servers-back-04-2007.jpg
Architecture practical ?


    “designing & implementing scalable
  applications with memcached and mysql”
            htt...
Architecture practical ?




http://blog.thinkdiff.net/wp-content/uploads/2009/02/memcache_22-02-2009.png
Coding ? (in PHP)
/* OO API */
$memcacheObj = new Memcache;
$memcacheObj->connect('memcache_host', 11211);

/* set */
$mem...
CMS ?
• Drupal has Memcache API and Integration
  http://drupal.org/project/memcache
• Wordpress has object cache
  http:/...
code optimization is best
Discussion
   Q&A
Ref.
• Improving PHP Application Performance with APC
     http://www.slideshare.net/vortexau/improving-php-application-
 ...
Ref. (2)
• PHP: Memcache - Manual
  http://th.php.net/manual/en/book.memcache.php
• http://danga.com/memcached/
• http://p...
Thank you
           @FordAntiTrust
http://www.slideshare.net/FordAntiTrust
PHP Performance with APC + Memcached
PHP Performance with APC + Memcached
PHP Performance with APC + Memcached
Upcoming SlideShare
Loading in...5
×

PHP Performance with APC + Memcached

49,687

Published on

Published in: Technology
4 Comments
97 Likes
Statistics
Notes
No Downloads
Views
Total Views
49,687
On Slideshare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
792
Comments
4
Likes
97
Embeds 0
No embeds

No notes for slide

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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×