Methods and Best Practices for High Performance eCommerce

  • 14,284 views
Uploaded on

Magento HQ Developers Meet up, Los Angeles, September 16

Magento HQ Developers Meet up, Los Angeles, September 16

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
14,284
On Slideshare
0
From Embeds
0
Number of Embeds
12

Actions

Shares
Downloads
224
Comments
0
Likes
12

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Magento HQ Developers Meet up
    Methods and Best Practices for High Performance eCommerce.
    By Dmitriy Soroka
    System Architect at Magento, Inc
    20-Sep-10|
    1|
  • 2. Performance Improvement Techniques
    Environment
    Web Server Configuration
    Data Base Configuration
    Accelerating PHP
    Additional HTTP Requests
    Application
    Caching
    Session Handling
    More options
    Scaling
    Backend Server
    Multiple Frontend Servers
    Multiple Databases
    3rd party integrations
    Integration with Solr
  • 3. Benchmarks Methodology
    Siege with different concurrencies
    10, 20, 50, 100
    Database Size
    Sample data, 10K products, 80K products
    URLs
    CMS Page (home page)
    URLs List
    Checkout
    Results
    Requests per second
    Orders per hour
  • 4. Environment optimization
    Apache, MySQL, PHP
  • 5. Apache Configuration
    Apache modules – use just necessary modules
    KeepAlive directive
    mod_deflate - compress content before sending it to the browser
    Eliminating directory structure scans for the .htaccess
  • 6. MySQL Configuration
    innodb_buffer_pool_size
    Combined web and db server, 6 GB RAM – 2-3 GB
    Dedicated database server, 6 GB RAM – 5 GB
    Dedicated database server, 12 GB RAM – 10 GB
    innodb_thread_concurrency
    2 * [numberofCPUs] + 2
    table_cache is the number of tables that can be simultaneously opened by MySQL
    query_cache_size (64 Mb)
    query_cache_limit (2 Mb)
  • 7. Optimization Results
  • 8. Accelerating PHP
    File system structure optimization
    APC
    eAccelerator
    Zend Optimize
    Xcache
  • 9. Magento Compiler
  • 10. PHP Accelerators
  • 11. Additional HTTP Requests
    CSS
    Java Script
    Images
  • 12. Application optimization
    Cache, Sessions
  • 13. Cache Types
  • 14. Cache Enables vs. Cache disabled
  • 15. Cache Storages
    Memory Based
    File System Based
  • Two Levels Backend
    Two Levels Backend
    Slow level
    Fast level
  • 24. Cache Configuration
    <config>
    <global>
    <cache>
    <!-- apc / memcached / xcache / empty=file -->
    <backend></backend>
    <prefix|id_prefix></prefix|id_prefix>
    <backend_options>
    <option_code1>option_value1</option_code1>
    </backend_options>
    <frontend_options>
    <option_code1>option_value1</option_code1>
    </frontend_options>
    <memcached>
    <servers>....</servers>
    <memcached>
    </cache>
    </global>
    </config>
  • 25. Slow Backend
    <config>
    <global>
    <cache>
    <slow_backend>database</slow_backend>
    <slow_backend_options>
    <option_code1>option_value1</option_code1>
    </slow_backend_options>
    </cache>
    </global>
    </config>
  • 26. Storages Benchmark
  • 27. Full Page Cache (CMS page)
  • 28. Full Page Cache (urls list)
  • 29. Session Storage
    Files Memcached Data Base
  • 30. More…
    Flat Catalog
    Sales Archive
    Backend processes (cron, indexes)
    Theme complexity
  • 31. scaling
    Hardware, Web Nodes, Data Base
  • 32. Hardware
  • 33. Separate Backend Server
    Data Base
    Handle admin users
    Process backend activity (cron)
    Pre generate Full Page Cache
    Handle media queries
  • 34. Multiple Web Nodes (browsing)
  • 35. Multiple Web Nodes (checkout)
  • 36. Data Base
    config/global/resources
    <default_setup>
    <connection>
    <host><![CDATA[master]]></host>
    <username><![CDATA[writeuser]]></username>
    <password><![CDATA[writeuserpwd]]></password>
    <dbname><![CDATA[magento]]></dbname>
    <active>1</active>
    </connection>
    </default_setup>
    <default_read>
    <connection>
    <use></use>
    <host><![CDATA[slave]]></host>
    <username><![CDATA[readuser]]></username>
    <password><![CDATA[readuserpwd]]></password>
    <dbname><![CDATA[magento]]></dbname>
    <model>mysql4</model>
    <initStatements>SET NAMES utf8</initStatements>
    <type>pdo_mysql</type>
    <active>1</active>
    </connection>
    </default_read>
  • 37. 3rd party integrations
    Solr
  • 38. Using solr
    Spell checking
    Search suggestions
    Morphology
    Category navigation
    Facet navigation
  • 39. Benchmark Results
  • 40. Magento HQ Developers Meet up
    Thank You
    Email: dmitriy.soroka@varien.com
  • 41. Q&A