SlideShare a Scribd company logo
1 of 52
Download to read offline
© 2008 Oracle Corporation
<Insert Picture Here>




Solving the C20K Problem:
Raising the Bar in PHP Scalability
Luxi Chidambaran, Consulting Member of Technical Staff, Oracle
ZendCon, Sept 2008
The following is intended to outline our general
            product direction. It is intended for information
            purposes only, and may not be incorporated into any
            contract. It is not a commitment to deliver any
            material, code, or functionality, and should not be
            relied upon in making purchasing decisions.
            The development, release, and timing of any
            features or functionality described for Oracle’s
            products remain at the sole discretion of Oracle.




© 2008 Oracle Corporation
Overview



       •    The C20K Requirement for the Database
       •    Oracle 11g Database Resident Connection Pool
       •    Connecting PHP to DRCP: Enhanced oci8 extension
       •    DRCP Demo
       •    Horizontal Scalability




© 2008 Oracle Corporation
The C20K Requirement for
            the Database




© 2008 Oracle Corporation
circa 2003: The C10K Problem

       • http://www.kegel.com/c10k.html
       • The web is a big place. Can web servers handle 20k
         connections on a commodity box?
              • 1GHz, 2GB RAM, 1Gb/s Ethernet
              • At 20,000 clients, that is:
                 • [50KHz, 100KB RAM, and 50Kb/sec] per client
                 • Postulation: More than enough to shove 4KB page/sec to
                   each client




© 2008 Oracle Corporation
circa 2005: Enter AJAX

       • High performance AJAX applications start pushing
         web server limits on persistent connections
       • Spurs thinking on newer web server architectures to
         support tens of thousands of connections




© 2008 Oracle Corporation
circa 2005: Shifting Tiers:
                             PHP and Database Connections
       • PHP likes the process model: single threaded
       • The web is a bigger place
              •   There are more mid tier boxes
              •   There are more and more PHP processes
              •   There are more and more database connections
              •   And it’s growing!
       •    Mid-tier Connection pooling difficult in PHP
              • PHP processes can repeatedly connect/close
                 OR
              • PHP processes can hold onto private connection




© 2008 Oracle Corporation
Running out of Ideas?

       •    Use Non Persistent Connections?
              • High connect times
              • Burns CPU
              • Throughput hits a wall on a commodity database box soon
       •    Use Persistent Connections?
              • Majority idle
              • Excessive swapping, eventually exhausts RAM
       •    Both strategies run into problems as we get into
            thousands of database connections
              • Of course, you could throw more hardware at it
              • Poor utilization of system resources
              • Poor utilization of $$


© 2008 Oracle Corporation
circa 2005: The C20K Requirement
                             on the Database
       • Can a database handle 20K connections on a
         commodity box?
       • Challenging issue for database in terms of
              •   Connection Management
              •   Thread Management
              •   Network I/O
              •   State Management
              •   Performance and Scalability




© 2008 Oracle Corporation
2007: Enter
            Oracle 11g Database
            Resident Connection Pooling
            (DRCP)




© 2008 Oracle Corporation
DRCP Overview

       •    Oracle Database 11g Feature
              • Not just for PHP
       •    Pool of dedicated servers on database machine
       •    Pool shared across mid-tier processes and middle-tier
            nodes
       •    Scales to tens of thousands of persistent connections
       •    Greatly speeds up non-persistent connections
       •    Co-exists in all database server configurations
              • Single instance, RAC




© 2008 Oracle Corporation
Basic Functionality

       •    Pooling is optionally enabled by DBA on server
              • Min, Max, Timeout etc. for Pool
       •    Client connect string:
              • hostname/service:POOLED
              • (SERVER=POOLED)

       • Client directed to Database Resident Pool
       • Pooled Server “locked” when connection requested
         by client
       • Pooled Server “released” back to pool when client
         disconnects



© 2008 Oracle Corporation
Dedicated Servers vs DRCP




                    No Connection Pooling   11g Database Resident Connection Pooling




© 2008 Oracle Corporation
Sample Sizing for 5000 Clients
                                            Dedicated        Shared           DRCP
                                             Servers         Servers         Servers

                            Database
                            Servers        5000 * 4 MB      100 * 4 MB     100 * 4 MB

                            Session
                            Memory         5000 * 400 KB   5000 * 400 KB   100 * 400 KB

                            DRCP
                            Connection                                     5000 * 35 KB
                            Broker
                            Overhead

                            Total Memory      21 GB          2.3 GB         610 MB




© 2008 Oracle Corporation
When to Use DRCP

       •    DRCP can be useful when any of the following apply:
              • Large number of connections need to be supported with
                minimum memory usage on database host
              • Applications mostly use same database credentials for all
                connections
              • Applications acquire a database connection, work on it for a
                relatively short duration, and then release it
              • Multiple web server hosts
              • Connections look identical in terms of session settings, for
                example date format settings and PL/SQL package state
       •    Generally true for majority of web applications



© 2008 Oracle Corporation
Starting and Configuring DRCP

       •        Start the pool:
              SQL> execute dbms_connection_pool.start_pool();
       •        Optionally Configure the Pool:
              SQL> execute dbms_connection_pool.configure_pool(
                    pool_name                      =>
                            'SYS_DEFAULT_CONNECTION_POOL',
                            minsize                  => 4,
                            maxsize                  => 40,
                            incrsize                 => 2,
                            session_cached_cursors   => 20,
                            inactivity_timeout       => 300,
                            max_think_time           => 600,
                            max_use_session          => 500000,
                            max_lifetime_session     => 86400);




© 2008 Oracle Corporation
DRCP: System Components

       •    Connection Broker
              •   New in Oracle Database 11g
              •   Oracle instance background daemon
              •   Handles initial authentication
              •   Handles subsequent connect/disconnect requests
       •    Pooled Servers
              • New in Oracle Database 11g
              • Oracle instance background slave processes
       •    Oracle 11g OCI Client library
              • DRCP aware




© 2008 Oracle Corporation
DRCP: Connecting




© 2008 Oracle Corporation
DRCP: Doing Work




© 2008 Oracle Corporation
DRCP: After Disconnecting




© 2008 Oracle Corporation
DRCP: Pool Sharing

       • There is one physical pool in Oracle 11g
       • Connections are never shared across different
         database usernames for security
       • CONNECTION_CLASS
              • Allows for multiple logical sub pools per user
              • Allows clients to identify the “type” of connection required
              • Only clients with same “username.connection_class” share
                connections




© 2008 Oracle Corporation
DRCP: Pool Sharing




© 2008 Oracle Corporation
Configuring DRCP for a Very
                             Large #Connections
       •    Bump up O/S file descriptor limits
              • E.g on Linux: /etc/security/limits.conf
              • oracle HARD NOFILE 40000
       •    Configuring additional brokers
              • Helps if O/S has a small per process file descriptor limit
              • dbms_connection_pool_alter_param
              • NUM_CBROK (default=1)
       •    Configure the max number of connections per broker
              • Helps distribute connections across multiple brokers
              • dbms_connection_pool_alter_param
              • MAXCONN_CBROK (default=40,000)



© 2008 Oracle Corporation
DRCP: Key Optimizations




© 2008 Oracle Corporation
DRCP: Key Optimizations

       •    No extra round-trips or hops
              • Connection request bundled with first work request
              • Broker not involved in processing work requests
              • Connection close request is asynchronous
       •    Connection to Broker
              • Kept alive even after PHP “closes” the connection
              • Allows for faster re-connection
       •    Optimization for low end (#clients < #pooled servers)
              • Behaves like dedicated servers at low end
              • Switches to pooled automatically at high end




© 2008 Oracle Corporation
2008:
            Connecting PHP to DRCP:
            The Enhanced OCI8
            Extension




© 2008 Oracle Corporation
What is OCI8?

        • Main Oracle Database extension for PHP
        • Open source and part of PHP

         <?php
           $c = oci_connect('un', 'pw', '//localhost/XE');
           $s = oci_parse($c, 'select * from employees');
           oci_execute($s);
           while ($row = oci_fetch_array($s))‫‏‬
              foreach ($row as $item)‫‏‬
                print $item;
         ?>



© 2008 Oracle Corporation
Three Tier Web Model


                            Apache

                            PHP

                            OCI8 Extension
                            Oracle Client
                            Libraries

   Web User                    Mid Tier      Oracle Database
                            9iR2, 10g, 11g    8i, 9i, 10g, 11g
                             Oracle Client     Any platform
                             Any platform
© 2008 Oracle Corporation
Get the Latest OCI8

       •    php.net
              • Source code, Windows binaries
       •    PECL - PHP Extension Community Library
              • Useful for updating PHP 4 with new OCI8
       •    oss.oracle.com/projects/php
              • RPMs for Linux with OCI8 and PDO_OCI




© 2008 Oracle Corporation
Installation Steps for DRCP with PHP

       •        Install Oracle Database 11.1.0.6 (with one patch for
                bug 6474441)
       •        Download
              • PHP 5.3 (has OCI8 1.3)
                 OR
              • PHP 4.3.9 – 5.2 and OCI8 1.3.4 from Pecl
       •        Build PHP using Oracle 11g client libraries from
                ORACLE_HOME or Instant Client




© 2008 Oracle Corporation
Using DRCP with PHP

       •    No application code change required
              • Unchanged PHP API
              • Deployment decision to use DRCP
              • Application can still talk to other Oracle versions
       •    Configure and start DRCP on Oracle Database 11g
              • Setup O/S file descriptor limits
              • Configure pool limits, timeouts, #brokers etc as required
                dbms_connection_pool.start_pool
       •    Set php.ini parameters
                  oci8.connection_class = MYAPP
                  oci8.old_oci_close_semantics = Off (which is default)



© 2008 Oracle Corporation
Some DRCP Best Practices for PHP

       •    Close connections when doing non-DB processing
              • Allows DRCP to serve more clients with the same pool size
       •    Explicitly control commits and rollbacks
              • Provides deterministic transaction behavior that is portable to
                older OCI8 versions
       •    Setting oci8.connection_class
              • Ensure that applications under a connection_class have
                uniform session state expectations
              • Use the same oci8.connection_class value across machines
                hosting the same app to maximize DRCP sharing
       •    With DRCP: LOGON triggers can fire multiple times
              • Still useful for setting session values like date formats
       •    Monitor DRCP performance with V$CPOOL_STATS


© 2008 Oracle Corporation
DRCP Demo




© 2008 Oracle Corporation
Non DRCP Performance




© 2008 Oracle Corporation
DRCP Performance




© 2008 Oracle Corporation
DRCP Benchmark




© 2008 Oracle Corporation
A DRCP Benchmark

       •    PHP script
              • connect, query, disconnect, sleep 1 second
       •    Server
              • Dual CPU Intel P4/Xeon 3.00GHz
              • 2GB RAM
              • 32bit Red Hat Enterprise Linux 4
       •    DRCP
              • 100 pooled servers, one connection broker
       •    Clients
              • 3 similar machines
              • Apache
       •    See PHP DRCP Whitepaper for details


© 2008 Oracle Corporation
PHP DRCP Benchmark - Throughput




                            (Throughput is executes per second)‫‏‬



© 2008 Oracle Corporation
PHP DRCP Benchmark - Memory




© 2008 Oracle Corporation
Other OCI8 1.3 Changes

       • Fixed PHP OCI8 connection ref-counting edge cases
       • Better detection of dead sessions and bounced DBs
       • Automatic cleanup of dead, idle connections
       • Closing persistent connections can now rollback




© 2008 Oracle Corporation
Horizontal Scalability with
            Oracle Database 11g Real
            Application Clusters (RAC)




© 2008 Oracle Corporation
RAC Architecture




© 2008 Oracle Corporation
DRCP on RAC

       • Horizontal scaling as your database load increases
       • N*C20K with N RAC nodes!!
       • DRCP starts on all RAC instances
       • Same pool limits apply to each individual RAC
         instance
              • min, max
              • number of brokers
              • max connections per broker
       •    DRCP connections benefit from TNS Listener
            connection load balancing across RAC instances



© 2008 Oracle Corporation
What about High Availability?

       •    Fast Application Notification (FAN)
       •    When DB node or network fails
              • Database generates FAN events
              • Oracle error returned without TCP timeout delay
              • PHP application is not blocked for TCP timeout – it can
                immediately reconnect to surviving DB instance

              $conn = doConnect();
              $err = doSomeWork($conn);
              if (isConnectionError($err)) {
                // reconnect, find what was committed, and retry
                $conn = doConnect();
                $err = checkApplicationStateAndContinueWork($conn);
              }
              if ($err)
                handleError($err);

© 2008 Oracle Corporation
Fast Application Notification

       • High Availability feature for PHP with RAC or Data
         Guard with physical standby
       • Usable with or without DRCP
       • Available from Oracle 10gR2
       • OCI8 1.3 supports FAN




© 2008 Oracle Corporation
FAN Configuration

      •     Tell DB to broadcast FAN Events
            SQL> execute
             dbms_service.modify_service(service_name =>'SALES',
             aq_ha_notifications =>TRUE);
      •   Configure PHP's php.ini so OCI8 listens for FAN
          events
            oci8.events = On
      •   Optionally add re-connection code to PHP application




© 2008 Oracle Corporation
Oracle Resources

         •     Free Oracle Techology Network (OTN)‫‏‬
               PHP Developer Center
                  otn.oracle.com/php
               • Underground PHP and Oracle Manual
               • Whitepapers, Articles, FAQs, links to blogs, Jdeveloper
                   PHP Extension, PHP RPMs
         •     Information
                      christopher.jones@oracle.com
                      blogs.oracle.com/opal
         •     SQL and PL/SQL Questions
                      asktom.oracle.com
         •     ISVs and hardware vendors
                     oraclepartnernetwork.oracle.com


© 2008 Oracle Corporation
PHP Scalability and High
                             Availability Whitepaper
       •    Excellent introduction to PHP with DRCP and FAN
              • www.oracle.com/technology/tech/php/pdf/php-scalability-ha-twp.pdf




© 2008 Oracle Corporation
Oracle Technology Network
          PHP Developer Center
 •    Free
 •    Articles
 •    Install guides
 •    Underground PHP
      and Oracle Manual
 •    Online forum
 •    PHP RPMs
 •    Oracle JDeveloper
      10g PHP extension

                            otn.oracle.com/php


© 2008 Oracle Corporation
The preceding is intended to outline our general
            product direction. It is intended for information
            purposes only, and may not be incorporated into any
            contract. It is not a commitment to deliver any
            material, code, or functionality, and should not be
            relied upon in making purchasing decisions.
            The development, release, and timing of any
            features or functionality described for Oracle’s
            products remain at the sole discretion of Oracle.




© 2008 Oracle Corporation
© 2008 Oracle Corporation

More Related Content

What's hot

Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postvamsi krishna
 
Java troubleshooting thread dump
Java troubleshooting thread dumpJava troubleshooting thread dump
Java troubleshooting thread dumpejlp12
 
12 Things About WebLogic 12.1.3 #oow2014 #otnla15
12 Things About WebLogic 12.1.3 #oow2014 #otnla1512 Things About WebLogic 12.1.3 #oow2014 #otnla15
12 Things About WebLogic 12.1.3 #oow2014 #otnla15Frank Munz
 
Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Ryan Cuprak
 
Give Your Site a Boost with Memcache
Give Your Site a Boost with MemcacheGive Your Site a Boost with Memcache
Give Your Site a Boost with MemcacheBen Ramsey
 
Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions Haim Yadid
 
Blue host openstacksummit_2013
Blue host openstacksummit_2013Blue host openstacksummit_2013
Blue host openstacksummit_2013Jun Park
 
Java EE 8: What Servlet 4 and HTTP2 Mean
Java EE 8: What Servlet 4 and HTTP2 MeanJava EE 8: What Servlet 4 and HTTP2 Mean
Java EE 8: What Servlet 4 and HTTP2 MeanAlex Theedom
 
LinkedIn Communication Architecture
LinkedIn Communication ArchitectureLinkedIn Communication Architecture
LinkedIn Communication ArchitectureLinkedIn
 
Writing & Using Web Services
Writing & Using Web ServicesWriting & Using Web Services
Writing & Using Web ServicesRajarshi Guha
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]Ryan Cuprak
 
WebLogic Scripting Tool Overview
WebLogic Scripting Tool OverviewWebLogic Scripting Tool Overview
WebLogic Scripting Tool OverviewJames Bayer
 
WebLogic Deployment Plan Example
WebLogic Deployment Plan ExampleWebLogic Deployment Plan Example
WebLogic Deployment Plan ExampleJames Bayer
 
Caching with Memcached and APC
Caching with Memcached and APCCaching with Memcached and APC
Caching with Memcached and APCBen Ramsey
 
Scalable Integration with JBoss Fuse
Scalable Integration with JBoss FuseScalable Integration with JBoss Fuse
Scalable Integration with JBoss FuseChristina Lin
 

What's hot (18)

Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
Java troubleshooting thread dump
Java troubleshooting thread dumpJava troubleshooting thread dump
Java troubleshooting thread dump
 
12 Things About WebLogic 12.1.3 #oow2014 #otnla15
12 Things About WebLogic 12.1.3 #oow2014 #otnla1512 Things About WebLogic 12.1.3 #oow2014 #otnla15
12 Things About WebLogic 12.1.3 #oow2014 #otnla15
 
Connection Pooling
Connection PoolingConnection Pooling
Connection Pooling
 
Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)
 
HTML5 Refresher
HTML5 RefresherHTML5 Refresher
HTML5 Refresher
 
Give Your Site a Boost with Memcache
Give Your Site a Boost with MemcacheGive Your Site a Boost with Memcache
Give Your Site a Boost with Memcache
 
Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions
 
Blue host openstacksummit_2013
Blue host openstacksummit_2013Blue host openstacksummit_2013
Blue host openstacksummit_2013
 
Java EE 8: What Servlet 4 and HTTP2 Mean
Java EE 8: What Servlet 4 and HTTP2 MeanJava EE 8: What Servlet 4 and HTTP2 Mean
Java EE 8: What Servlet 4 and HTTP2 Mean
 
LinkedIn Communication Architecture
LinkedIn Communication ArchitectureLinkedIn Communication Architecture
LinkedIn Communication Architecture
 
Writing & Using Web Services
Writing & Using Web ServicesWriting & Using Web Services
Writing & Using Web Services
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]
 
Lagom Workshop BarcelonaJUG 2017-06-08
Lagom Workshop  BarcelonaJUG 2017-06-08Lagom Workshop  BarcelonaJUG 2017-06-08
Lagom Workshop BarcelonaJUG 2017-06-08
 
WebLogic Scripting Tool Overview
WebLogic Scripting Tool OverviewWebLogic Scripting Tool Overview
WebLogic Scripting Tool Overview
 
WebLogic Deployment Plan Example
WebLogic Deployment Plan ExampleWebLogic Deployment Plan Example
WebLogic Deployment Plan Example
 
Caching with Memcached and APC
Caching with Memcached and APCCaching with Memcached and APC
Caching with Memcached and APC
 
Scalable Integration with JBoss Fuse
Scalable Integration with JBoss FuseScalable Integration with JBoss Fuse
Scalable Integration with JBoss Fuse
 

Viewers also liked

Oracle Compute Cloud Service快速实践
Oracle Compute Cloud Service快速实践Oracle Compute Cloud Service快速实践
Oracle Compute Cloud Service快速实践Zhaoyang Wang
 
Oracle Compute Cloud Service介绍
Oracle Compute Cloud Service介绍Oracle Compute Cloud Service介绍
Oracle Compute Cloud Service介绍Zhaoyang Wang
 
Zend Core on IBM i - Security Considerations
Zend Core on IBM i - Security ConsiderationsZend Core on IBM i - Security Considerations
Zend Core on IBM i - Security ConsiderationsZendCon
 
MySQL Manchester TT - 5.7 Whats new
MySQL Manchester TT - 5.7 Whats newMySQL Manchester TT - 5.7 Whats new
MySQL Manchester TT - 5.7 Whats newMark Swarbrick
 
PHP on Windows - What's New
PHP on Windows - What's NewPHP on Windows - What's New
PHP on Windows - What's NewZendCon
 
Tiery Eyed
Tiery EyedTiery Eyed
Tiery EyedZendCon
 
MySQL Optimizer Overview
MySQL Optimizer OverviewMySQL Optimizer Overview
MySQL Optimizer OverviewOlav Sandstå
 
A Storage Story #ChefConf2013
A Storage Story #ChefConf2013A Storage Story #ChefConf2013
A Storage Story #ChefConf2013Kyle Bader
 
Oracle cloud 使用云市场快速搭建小型电商网站
Oracle cloud 使用云市场快速搭建小型电商网站Oracle cloud 使用云市场快速搭建小型电商网站
Oracle cloud 使用云市场快速搭建小型电商网站Zhaoyang Wang
 
Framework Shootout
Framework ShootoutFramework Shootout
Framework ShootoutZendCon
 
PHP on IBM i Tutorial
PHP on IBM i TutorialPHP on IBM i Tutorial
PHP on IBM i TutorialZendCon
 
MySQL Manchester TT - Security
MySQL Manchester TT  - SecurityMySQL Manchester TT  - Security
MySQL Manchester TT - SecurityMark Swarbrick
 
PHP and Platform Independance in the Cloud
PHP and Platform Independance in the CloudPHP and Platform Independance in the Cloud
PHP and Platform Independance in the CloudZendCon
 
Oracle cloud ravello介绍及测试账户申请
Oracle cloud ravello介绍及测试账户申请Oracle cloud ravello介绍及测试账户申请
Oracle cloud ravello介绍及测试账户申请Zhaoyang Wang
 
Why MySQL High Availability Matters
Why MySQL High Availability MattersWhy MySQL High Availability Matters
Why MySQL High Availability MattersMark Swarbrick
 
MySQL Manchester TT - Replication Features
MySQL Manchester TT  - Replication FeaturesMySQL Manchester TT  - Replication Features
MySQL Manchester TT - Replication FeaturesMark Swarbrick
 
Application Diagnosis with Zend Server Tracing
Application Diagnosis with Zend Server TracingApplication Diagnosis with Zend Server Tracing
Application Diagnosis with Zend Server TracingZendCon
 
MySQL Tech Tour 2015 - 5.7 Connector/J/Net
MySQL Tech Tour 2015 - 5.7 Connector/J/NetMySQL Tech Tour 2015 - 5.7 Connector/J/Net
MySQL Tech Tour 2015 - 5.7 Connector/J/NetMark Swarbrick
 

Viewers also liked (20)

Oracle Compute Cloud Service快速实践
Oracle Compute Cloud Service快速实践Oracle Compute Cloud Service快速实践
Oracle Compute Cloud Service快速实践
 
Oracle Compute Cloud Service介绍
Oracle Compute Cloud Service介绍Oracle Compute Cloud Service介绍
Oracle Compute Cloud Service介绍
 
Zend Core on IBM i - Security Considerations
Zend Core on IBM i - Security ConsiderationsZend Core on IBM i - Security Considerations
Zend Core on IBM i - Security Considerations
 
MySQL Manchester TT - 5.7 Whats new
MySQL Manchester TT - 5.7 Whats newMySQL Manchester TT - 5.7 Whats new
MySQL Manchester TT - 5.7 Whats new
 
PHP on Windows - What's New
PHP on Windows - What's NewPHP on Windows - What's New
PHP on Windows - What's New
 
MySQL in your laptop
MySQL in your laptopMySQL in your laptop
MySQL in your laptop
 
Tiery Eyed
Tiery EyedTiery Eyed
Tiery Eyed
 
MySQL Optimizer Overview
MySQL Optimizer OverviewMySQL Optimizer Overview
MySQL Optimizer Overview
 
A Storage Story #ChefConf2013
A Storage Story #ChefConf2013A Storage Story #ChefConf2013
A Storage Story #ChefConf2013
 
Oracle cloud 使用云市场快速搭建小型电商网站
Oracle cloud 使用云市场快速搭建小型电商网站Oracle cloud 使用云市场快速搭建小型电商网站
Oracle cloud 使用云市场快速搭建小型电商网站
 
Framework Shootout
Framework ShootoutFramework Shootout
Framework Shootout
 
PHP on IBM i Tutorial
PHP on IBM i TutorialPHP on IBM i Tutorial
PHP on IBM i Tutorial
 
MySQL Manchester TT - Security
MySQL Manchester TT  - SecurityMySQL Manchester TT  - Security
MySQL Manchester TT - Security
 
Script it
Script itScript it
Script it
 
PHP and Platform Independance in the Cloud
PHP and Platform Independance in the CloudPHP and Platform Independance in the Cloud
PHP and Platform Independance in the Cloud
 
Oracle cloud ravello介绍及测试账户申请
Oracle cloud ravello介绍及测试账户申请Oracle cloud ravello介绍及测试账户申请
Oracle cloud ravello介绍及测试账户申请
 
Why MySQL High Availability Matters
Why MySQL High Availability MattersWhy MySQL High Availability Matters
Why MySQL High Availability Matters
 
MySQL Manchester TT - Replication Features
MySQL Manchester TT  - Replication FeaturesMySQL Manchester TT  - Replication Features
MySQL Manchester TT - Replication Features
 
Application Diagnosis with Zend Server Tracing
Application Diagnosis with Zend Server TracingApplication Diagnosis with Zend Server Tracing
Application Diagnosis with Zend Server Tracing
 
MySQL Tech Tour 2015 - 5.7 Connector/J/Net
MySQL Tech Tour 2015 - 5.7 Connector/J/NetMySQL Tech Tour 2015 - 5.7 Connector/J/Net
MySQL Tech Tour 2015 - 5.7 Connector/J/Net
 

Similar to Solving the C20K problem: Raising the bar in PHP Performance and Scalability

PHP Oracle Web Applications by Kuassi Mensah
PHP Oracle Web Applications by Kuassi MensahPHP Oracle Web Applications by Kuassi Mensah
PHP Oracle Web Applications by Kuassi MensahPHP Barcelona Conference
 
Deploying flash storage for Ceph without compromising performance
Deploying flash storage for Ceph without compromising performance Deploying flash storage for Ceph without compromising performance
Deploying flash storage for Ceph without compromising performance Ceph Community
 
SmartDB Office Hours: Connection Pool Sizing Concepts
SmartDB Office Hours: Connection Pool Sizing ConceptsSmartDB Office Hours: Connection Pool Sizing Concepts
SmartDB Office Hours: Connection Pool Sizing ConceptsKoppelaars
 
Messaging With ActiveMQ
Messaging With ActiveMQMessaging With ActiveMQ
Messaging With ActiveMQBruce Snyder
 
Brian Oliver Pimp My Data Grid
Brian Oliver  Pimp My Data GridBrian Oliver  Pimp My Data Grid
Brian Oliver Pimp My Data Griddeimos
 
Desayuno Tecnico OVN - Xsigo
Desayuno Tecnico OVN - XsigoDesayuno Tecnico OVN - Xsigo
Desayuno Tecnico OVN - XsigoFran Navarro
 
Database Performance With Proxy Architectures
Database  Performance With  Proxy  ArchitecturesDatabase  Performance With  Proxy  Architectures
Database Performance With Proxy ArchitecturesPerconaPerformance
 
Business_Continuity_Planning_with_SQL_Server_HADR_options_TechEd_Bangalore_20...
Business_Continuity_Planning_with_SQL_Server_HADR_options_TechEd_Bangalore_20...Business_Continuity_Planning_with_SQL_Server_HADR_options_TechEd_Bangalore_20...
Business_Continuity_Planning_with_SQL_Server_HADR_options_TechEd_Bangalore_20...LarryZaman
 
Technic4
Technic4Technic4
Technic4hjue
 
New Generation Oracle RAC Performance
New Generation Oracle RAC PerformanceNew Generation Oracle RAC Performance
New Generation Oracle RAC PerformanceAnil Nair
 
Migrate from Oracle to Aurora PostgreSQL: Best Practices, Design Patterns, & ...
Migrate from Oracle to Aurora PostgreSQL: Best Practices, Design Patterns, & ...Migrate from Oracle to Aurora PostgreSQL: Best Practices, Design Patterns, & ...
Migrate from Oracle to Aurora PostgreSQL: Best Practices, Design Patterns, & ...Amazon Web Services
 
Less06 networking
Less06 networkingLess06 networking
Less06 networkingAmit Bhalla
 
Introduction to Web Application Clustering
Introduction to Web Application ClusteringIntroduction to Web Application Clustering
Introduction to Web Application ClusteringPiyush Katariya
 
VMworld 2014: Extreme Performance Series
VMworld 2014: Extreme Performance Series VMworld 2014: Extreme Performance Series
VMworld 2014: Extreme Performance Series VMworld
 

Similar to Solving the C20K problem: Raising the bar in PHP Performance and Scalability (20)

PHP Oracle Web Applications by Kuassi Mensah
PHP Oracle Web Applications by Kuassi MensahPHP Oracle Web Applications by Kuassi Mensah
PHP Oracle Web Applications by Kuassi Mensah
 
Deploying flash storage for Ceph without compromising performance
Deploying flash storage for Ceph without compromising performance Deploying flash storage for Ceph without compromising performance
Deploying flash storage for Ceph without compromising performance
 
SmartDB Office Hours: Connection Pool Sizing Concepts
SmartDB Office Hours: Connection Pool Sizing ConceptsSmartDB Office Hours: Connection Pool Sizing Concepts
SmartDB Office Hours: Connection Pool Sizing Concepts
 
Messaging With ActiveMQ
Messaging With ActiveMQMessaging With ActiveMQ
Messaging With ActiveMQ
 
Brian Oliver Pimp My Data Grid
Brian Oliver  Pimp My Data GridBrian Oliver  Pimp My Data Grid
Brian Oliver Pimp My Data Grid
 
XS Japan 2008 Oracle VM English
XS Japan 2008 Oracle VM EnglishXS Japan 2008 Oracle VM English
XS Japan 2008 Oracle VM English
 
MySQL Aquarium Paris
MySQL Aquarium ParisMySQL Aquarium Paris
MySQL Aquarium Paris
 
Desayuno Tecnico OVN - Xsigo
Desayuno Tecnico OVN - XsigoDesayuno Tecnico OVN - Xsigo
Desayuno Tecnico OVN - Xsigo
 
Orcale Presentation
Orcale PresentationOrcale Presentation
Orcale Presentation
 
Database Performance With Proxy Architectures
Database  Performance With  Proxy  ArchitecturesDatabase  Performance With  Proxy  Architectures
Database Performance With Proxy Architectures
 
Business_Continuity_Planning_with_SQL_Server_HADR_options_TechEd_Bangalore_20...
Business_Continuity_Planning_with_SQL_Server_HADR_options_TechEd_Bangalore_20...Business_Continuity_Planning_with_SQL_Server_HADR_options_TechEd_Bangalore_20...
Business_Continuity_Planning_with_SQL_Server_HADR_options_TechEd_Bangalore_20...
 
Technic4
Technic4Technic4
Technic4
 
New Generation Oracle RAC Performance
New Generation Oracle RAC PerformanceNew Generation Oracle RAC Performance
New Generation Oracle RAC Performance
 
Migrate from Oracle to Aurora PostgreSQL: Best Practices, Design Patterns, & ...
Migrate from Oracle to Aurora PostgreSQL: Best Practices, Design Patterns, & ...Migrate from Oracle to Aurora PostgreSQL: Best Practices, Design Patterns, & ...
Migrate from Oracle to Aurora PostgreSQL: Best Practices, Design Patterns, & ...
 
XS Boston 2008 Network Topology
XS Boston 2008 Network TopologyXS Boston 2008 Network Topology
XS Boston 2008 Network Topology
 
Weblogic - clustering failover, and load balancing
Weblogic - clustering failover, and load balancingWeblogic - clustering failover, and load balancing
Weblogic - clustering failover, and load balancing
 
Less06 networking
Less06 networkingLess06 networking
Less06 networking
 
Rest Vs Soap Yawn2289
Rest Vs Soap Yawn2289Rest Vs Soap Yawn2289
Rest Vs Soap Yawn2289
 
Introduction to Web Application Clustering
Introduction to Web Application ClusteringIntroduction to Web Application Clustering
Introduction to Web Application Clustering
 
VMworld 2014: Extreme Performance Series
VMworld 2014: Extreme Performance Series VMworld 2014: Extreme Performance Series
VMworld 2014: Extreme Performance Series
 

More from ZendCon

Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and ExtendingZend_Tool: Practical use and Extending
Zend_Tool: Practical use and ExtendingZendCon
 
I18n with PHP 5.3
I18n with PHP 5.3I18n with PHP 5.3
I18n with PHP 5.3ZendCon
 
Cloud Computing: The Hard Problems Never Go Away
Cloud Computing: The Hard Problems Never Go AwayCloud Computing: The Hard Problems Never Go Away
Cloud Computing: The Hard Problems Never Go AwayZendCon
 
Planning for Synchronization with Browser-Local Databases
Planning for Synchronization with Browser-Local DatabasesPlanning for Synchronization with Browser-Local Databases
Planning for Synchronization with Browser-Local DatabasesZendCon
 
Magento - a Zend Framework Application
Magento - a Zend Framework ApplicationMagento - a Zend Framework Application
Magento - a Zend Framework ApplicationZendCon
 
Enterprise-Class PHP Security
Enterprise-Class PHP SecurityEnterprise-Class PHP Security
Enterprise-Class PHP SecurityZendCon
 
PHP and IBM i - Database Alternatives
PHP and IBM i - Database AlternativesPHP and IBM i - Database Alternatives
PHP and IBM i - Database AlternativesZendCon
 
Insights from the Experts: How PHP Leaders Are Transforming High-Impact PHP A...
Insights from the Experts: How PHP Leaders Are Transforming High-Impact PHP A...Insights from the Experts: How PHP Leaders Are Transforming High-Impact PHP A...
Insights from the Experts: How PHP Leaders Are Transforming High-Impact PHP A...ZendCon
 
Joe Staner Zend Con 2008
Joe Staner Zend Con 2008Joe Staner Zend Con 2008
Joe Staner Zend Con 2008ZendCon
 
Make your PHP Application Software-as-a-Service (SaaS) Ready with the Paralle...
Make your PHP Application Software-as-a-Service (SaaS) Ready with the Paralle...Make your PHP Application Software-as-a-Service (SaaS) Ready with the Paralle...
Make your PHP Application Software-as-a-Service (SaaS) Ready with the Paralle...ZendCon
 
DB2 Storage Engine for MySQL and Open Source Applications Session
DB2 Storage Engine for MySQL and Open Source Applications SessionDB2 Storage Engine for MySQL and Open Source Applications Session
DB2 Storage Engine for MySQL and Open Source Applications SessionZendCon
 
Digital Identity
Digital IdentityDigital Identity
Digital IdentityZendCon
 
Modernizing i5 Applications
Modernizing i5 ApplicationsModernizing i5 Applications
Modernizing i5 ApplicationsZendCon
 
Lesser Known Security Problems in PHP Applications
Lesser Known Security Problems in PHP ApplicationsLesser Known Security Problems in PHP Applications
Lesser Known Security Problems in PHP ApplicationsZendCon
 
Architecting for PHP5 - Why "Runs on PHP5" is not "Written for PHP5"
Architecting for PHP5 - Why "Runs on PHP5" is not "Written for PHP5"Architecting for PHP5 - Why "Runs on PHP5" is not "Written for PHP5"
Architecting for PHP5 - Why "Runs on PHP5" is not "Written for PHP5"ZendCon
 
SQL Query Tuning: The Legend of Drunken Query Master
SQL Query Tuning: The Legend of Drunken Query MasterSQL Query Tuning: The Legend of Drunken Query Master
SQL Query Tuning: The Legend of Drunken Query MasterZendCon
 
ZendCon 2008 Closing Keynote
ZendCon 2008 Closing KeynoteZendCon 2008 Closing Keynote
ZendCon 2008 Closing KeynoteZendCon
 
Top Zend Studio Secrets
Top Zend Studio SecretsTop Zend Studio Secrets
Top Zend Studio SecretsZendCon
 
VIM for (PHP) Programmers
VIM for (PHP) ProgrammersVIM for (PHP) Programmers
VIM for (PHP) ProgrammersZendCon
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentZendCon
 

More from ZendCon (20)

Zend_Tool: Practical use and Extending
Zend_Tool: Practical use and ExtendingZend_Tool: Practical use and Extending
Zend_Tool: Practical use and Extending
 
I18n with PHP 5.3
I18n with PHP 5.3I18n with PHP 5.3
I18n with PHP 5.3
 
Cloud Computing: The Hard Problems Never Go Away
Cloud Computing: The Hard Problems Never Go AwayCloud Computing: The Hard Problems Never Go Away
Cloud Computing: The Hard Problems Never Go Away
 
Planning for Synchronization with Browser-Local Databases
Planning for Synchronization with Browser-Local DatabasesPlanning for Synchronization with Browser-Local Databases
Planning for Synchronization with Browser-Local Databases
 
Magento - a Zend Framework Application
Magento - a Zend Framework ApplicationMagento - a Zend Framework Application
Magento - a Zend Framework Application
 
Enterprise-Class PHP Security
Enterprise-Class PHP SecurityEnterprise-Class PHP Security
Enterprise-Class PHP Security
 
PHP and IBM i - Database Alternatives
PHP and IBM i - Database AlternativesPHP and IBM i - Database Alternatives
PHP and IBM i - Database Alternatives
 
Insights from the Experts: How PHP Leaders Are Transforming High-Impact PHP A...
Insights from the Experts: How PHP Leaders Are Transforming High-Impact PHP A...Insights from the Experts: How PHP Leaders Are Transforming High-Impact PHP A...
Insights from the Experts: How PHP Leaders Are Transforming High-Impact PHP A...
 
Joe Staner Zend Con 2008
Joe Staner Zend Con 2008Joe Staner Zend Con 2008
Joe Staner Zend Con 2008
 
Make your PHP Application Software-as-a-Service (SaaS) Ready with the Paralle...
Make your PHP Application Software-as-a-Service (SaaS) Ready with the Paralle...Make your PHP Application Software-as-a-Service (SaaS) Ready with the Paralle...
Make your PHP Application Software-as-a-Service (SaaS) Ready with the Paralle...
 
DB2 Storage Engine for MySQL and Open Source Applications Session
DB2 Storage Engine for MySQL and Open Source Applications SessionDB2 Storage Engine for MySQL and Open Source Applications Session
DB2 Storage Engine for MySQL and Open Source Applications Session
 
Digital Identity
Digital IdentityDigital Identity
Digital Identity
 
Modernizing i5 Applications
Modernizing i5 ApplicationsModernizing i5 Applications
Modernizing i5 Applications
 
Lesser Known Security Problems in PHP Applications
Lesser Known Security Problems in PHP ApplicationsLesser Known Security Problems in PHP Applications
Lesser Known Security Problems in PHP Applications
 
Architecting for PHP5 - Why "Runs on PHP5" is not "Written for PHP5"
Architecting for PHP5 - Why "Runs on PHP5" is not "Written for PHP5"Architecting for PHP5 - Why "Runs on PHP5" is not "Written for PHP5"
Architecting for PHP5 - Why "Runs on PHP5" is not "Written for PHP5"
 
SQL Query Tuning: The Legend of Drunken Query Master
SQL Query Tuning: The Legend of Drunken Query MasterSQL Query Tuning: The Legend of Drunken Query Master
SQL Query Tuning: The Legend of Drunken Query Master
 
ZendCon 2008 Closing Keynote
ZendCon 2008 Closing KeynoteZendCon 2008 Closing Keynote
ZendCon 2008 Closing Keynote
 
Top Zend Studio Secrets
Top Zend Studio SecretsTop Zend Studio Secrets
Top Zend Studio Secrets
 
VIM for (PHP) Programmers
VIM for (PHP) ProgrammersVIM for (PHP) Programmers
VIM for (PHP) Programmers
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 

Recently uploaded

Keppel Ltd. 1Q 2024 Business Update Presentation Slides
Keppel Ltd. 1Q 2024 Business Update  Presentation SlidesKeppel Ltd. 1Q 2024 Business Update  Presentation Slides
Keppel Ltd. 1Q 2024 Business Update Presentation SlidesKeppelCorporation
 
Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024Kirill Klimov
 
Independent Call Girls Andheri Nightlaila 9967584737
Independent Call Girls Andheri Nightlaila 9967584737Independent Call Girls Andheri Nightlaila 9967584737
Independent Call Girls Andheri Nightlaila 9967584737Riya Pathan
 
8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR
8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR
8447779800, Low rate Call girls in Shivaji Enclave Delhi NCRashishs7044
 
Pitch Deck Teardown: Geodesic.Life's $500k Pre-seed deck
Pitch Deck Teardown: Geodesic.Life's $500k Pre-seed deckPitch Deck Teardown: Geodesic.Life's $500k Pre-seed deck
Pitch Deck Teardown: Geodesic.Life's $500k Pre-seed deckHajeJanKamps
 
Annual General Meeting Presentation Slides
Annual General Meeting Presentation SlidesAnnual General Meeting Presentation Slides
Annual General Meeting Presentation SlidesKeppelCorporation
 
Call Girls In Sikandarpur Gurgaon ❤️8860477959_Russian 100% Genuine Escorts I...
Call Girls In Sikandarpur Gurgaon ❤️8860477959_Russian 100% Genuine Escorts I...Call Girls In Sikandarpur Gurgaon ❤️8860477959_Russian 100% Genuine Escorts I...
Call Girls In Sikandarpur Gurgaon ❤️8860477959_Russian 100% Genuine Escorts I...lizamodels9
 
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607dollysharma2066
 
Lowrate Call Girls In Sector 18 Noida ❤️8860477959 Escorts 100% Genuine Servi...
Lowrate Call Girls In Sector 18 Noida ❤️8860477959 Escorts 100% Genuine Servi...Lowrate Call Girls In Sector 18 Noida ❤️8860477959 Escorts 100% Genuine Servi...
Lowrate Call Girls In Sector 18 Noida ❤️8860477959 Escorts 100% Genuine Servi...lizamodels9
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessSeta Wicaksana
 
Contemporary Economic Issues Facing the Filipino Entrepreneur (1).pptx
Contemporary Economic Issues Facing the Filipino Entrepreneur (1).pptxContemporary Economic Issues Facing the Filipino Entrepreneur (1).pptx
Contemporary Economic Issues Facing the Filipino Entrepreneur (1).pptxMarkAnthonyAurellano
 
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,noida100girls
 
Future Of Sample Report 2024 | Redacted Version
Future Of Sample Report 2024 | Redacted VersionFuture Of Sample Report 2024 | Redacted Version
Future Of Sample Report 2024 | Redacted VersionMintel Group
 
The CMO Survey - Highlights and Insights Report - Spring 2024
The CMO Survey - Highlights and Insights Report - Spring 2024The CMO Survey - Highlights and Insights Report - Spring 2024
The CMO Survey - Highlights and Insights Report - Spring 2024christinemoorman
 
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...lizamodels9
 
Global Scenario On Sustainable and Resilient Coconut Industry by Dr. Jelfina...
Global Scenario On Sustainable  and Resilient Coconut Industry by Dr. Jelfina...Global Scenario On Sustainable  and Resilient Coconut Industry by Dr. Jelfina...
Global Scenario On Sustainable and Resilient Coconut Industry by Dr. Jelfina...ictsugar
 
Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...
Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...
Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...lizamodels9
 
Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...Seta Wicaksana
 
Innovation Conference 5th March 2024.pdf
Innovation Conference 5th March 2024.pdfInnovation Conference 5th March 2024.pdf
Innovation Conference 5th March 2024.pdfrichard876048
 

Recently uploaded (20)

Keppel Ltd. 1Q 2024 Business Update Presentation Slides
Keppel Ltd. 1Q 2024 Business Update  Presentation SlidesKeppel Ltd. 1Q 2024 Business Update  Presentation Slides
Keppel Ltd. 1Q 2024 Business Update Presentation Slides
 
Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024Flow Your Strategy at Flight Levels Day 2024
Flow Your Strategy at Flight Levels Day 2024
 
Independent Call Girls Andheri Nightlaila 9967584737
Independent Call Girls Andheri Nightlaila 9967584737Independent Call Girls Andheri Nightlaila 9967584737
Independent Call Girls Andheri Nightlaila 9967584737
 
8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR
8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR
8447779800, Low rate Call girls in Shivaji Enclave Delhi NCR
 
Pitch Deck Teardown: Geodesic.Life's $500k Pre-seed deck
Pitch Deck Teardown: Geodesic.Life's $500k Pre-seed deckPitch Deck Teardown: Geodesic.Life's $500k Pre-seed deck
Pitch Deck Teardown: Geodesic.Life's $500k Pre-seed deck
 
Annual General Meeting Presentation Slides
Annual General Meeting Presentation SlidesAnnual General Meeting Presentation Slides
Annual General Meeting Presentation Slides
 
Japan IT Week 2024 Brochure by 47Billion (English)
Japan IT Week 2024 Brochure by 47Billion (English)Japan IT Week 2024 Brochure by 47Billion (English)
Japan IT Week 2024 Brochure by 47Billion (English)
 
Call Girls In Sikandarpur Gurgaon ❤️8860477959_Russian 100% Genuine Escorts I...
Call Girls In Sikandarpur Gurgaon ❤️8860477959_Russian 100% Genuine Escorts I...Call Girls In Sikandarpur Gurgaon ❤️8860477959_Russian 100% Genuine Escorts I...
Call Girls In Sikandarpur Gurgaon ❤️8860477959_Russian 100% Genuine Escorts I...
 
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
(Best) ENJOY Call Girls in Faridabad Ex | 8377087607
 
Lowrate Call Girls In Sector 18 Noida ❤️8860477959 Escorts 100% Genuine Servi...
Lowrate Call Girls In Sector 18 Noida ❤️8860477959 Escorts 100% Genuine Servi...Lowrate Call Girls In Sector 18 Noida ❤️8860477959 Escorts 100% Genuine Servi...
Lowrate Call Girls In Sector 18 Noida ❤️8860477959 Escorts 100% Genuine Servi...
 
Organizational Structure Running A Successful Business
Organizational Structure Running A Successful BusinessOrganizational Structure Running A Successful Business
Organizational Structure Running A Successful Business
 
Contemporary Economic Issues Facing the Filipino Entrepreneur (1).pptx
Contemporary Economic Issues Facing the Filipino Entrepreneur (1).pptxContemporary Economic Issues Facing the Filipino Entrepreneur (1).pptx
Contemporary Economic Issues Facing the Filipino Entrepreneur (1).pptx
 
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
BEST Call Girls In Old Faridabad ✨ 9773824855 ✨ Escorts Service In Delhi Ncr,
 
Future Of Sample Report 2024 | Redacted Version
Future Of Sample Report 2024 | Redacted VersionFuture Of Sample Report 2024 | Redacted Version
Future Of Sample Report 2024 | Redacted Version
 
The CMO Survey - Highlights and Insights Report - Spring 2024
The CMO Survey - Highlights and Insights Report - Spring 2024The CMO Survey - Highlights and Insights Report - Spring 2024
The CMO Survey - Highlights and Insights Report - Spring 2024
 
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
Call Girls In Connaught Place Delhi ❤️88604**77959_Russian 100% Genuine Escor...
 
Global Scenario On Sustainable and Resilient Coconut Industry by Dr. Jelfina...
Global Scenario On Sustainable  and Resilient Coconut Industry by Dr. Jelfina...Global Scenario On Sustainable  and Resilient Coconut Industry by Dr. Jelfina...
Global Scenario On Sustainable and Resilient Coconut Industry by Dr. Jelfina...
 
Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...
Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...
Call Girls In Radisson Blu Hotel New Delhi Paschim Vihar ❤️8860477959 Escorts...
 
Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...Ten Organizational Design Models to align structure and operations to busines...
Ten Organizational Design Models to align structure and operations to busines...
 
Innovation Conference 5th March 2024.pdf
Innovation Conference 5th March 2024.pdfInnovation Conference 5th March 2024.pdf
Innovation Conference 5th March 2024.pdf
 

Solving the C20K problem: Raising the bar in PHP Performance and Scalability

  • 1. © 2008 Oracle Corporation
  • 2. <Insert Picture Here> Solving the C20K Problem: Raising the Bar in PHP Scalability Luxi Chidambaran, Consulting Member of Technical Staff, Oracle ZendCon, Sept 2008
  • 3. The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remain at the sole discretion of Oracle. © 2008 Oracle Corporation
  • 4. Overview • The C20K Requirement for the Database • Oracle 11g Database Resident Connection Pool • Connecting PHP to DRCP: Enhanced oci8 extension • DRCP Demo • Horizontal Scalability © 2008 Oracle Corporation
  • 5. The C20K Requirement for the Database © 2008 Oracle Corporation
  • 6. circa 2003: The C10K Problem • http://www.kegel.com/c10k.html • The web is a big place. Can web servers handle 20k connections on a commodity box? • 1GHz, 2GB RAM, 1Gb/s Ethernet • At 20,000 clients, that is: • [50KHz, 100KB RAM, and 50Kb/sec] per client • Postulation: More than enough to shove 4KB page/sec to each client © 2008 Oracle Corporation
  • 7. circa 2005: Enter AJAX • High performance AJAX applications start pushing web server limits on persistent connections • Spurs thinking on newer web server architectures to support tens of thousands of connections © 2008 Oracle Corporation
  • 8. circa 2005: Shifting Tiers: PHP and Database Connections • PHP likes the process model: single threaded • The web is a bigger place • There are more mid tier boxes • There are more and more PHP processes • There are more and more database connections • And it’s growing! • Mid-tier Connection pooling difficult in PHP • PHP processes can repeatedly connect/close OR • PHP processes can hold onto private connection © 2008 Oracle Corporation
  • 9. Running out of Ideas? • Use Non Persistent Connections? • High connect times • Burns CPU • Throughput hits a wall on a commodity database box soon • Use Persistent Connections? • Majority idle • Excessive swapping, eventually exhausts RAM • Both strategies run into problems as we get into thousands of database connections • Of course, you could throw more hardware at it • Poor utilization of system resources • Poor utilization of $$ © 2008 Oracle Corporation
  • 10. circa 2005: The C20K Requirement on the Database • Can a database handle 20K connections on a commodity box? • Challenging issue for database in terms of • Connection Management • Thread Management • Network I/O • State Management • Performance and Scalability © 2008 Oracle Corporation
  • 11. 2007: Enter Oracle 11g Database Resident Connection Pooling (DRCP) © 2008 Oracle Corporation
  • 12. DRCP Overview • Oracle Database 11g Feature • Not just for PHP • Pool of dedicated servers on database machine • Pool shared across mid-tier processes and middle-tier nodes • Scales to tens of thousands of persistent connections • Greatly speeds up non-persistent connections • Co-exists in all database server configurations • Single instance, RAC © 2008 Oracle Corporation
  • 13. Basic Functionality • Pooling is optionally enabled by DBA on server • Min, Max, Timeout etc. for Pool • Client connect string: • hostname/service:POOLED • (SERVER=POOLED) • Client directed to Database Resident Pool • Pooled Server “locked” when connection requested by client • Pooled Server “released” back to pool when client disconnects © 2008 Oracle Corporation
  • 14. Dedicated Servers vs DRCP No Connection Pooling 11g Database Resident Connection Pooling © 2008 Oracle Corporation
  • 15. Sample Sizing for 5000 Clients Dedicated Shared DRCP Servers Servers Servers Database Servers 5000 * 4 MB 100 * 4 MB 100 * 4 MB Session Memory 5000 * 400 KB 5000 * 400 KB 100 * 400 KB DRCP Connection 5000 * 35 KB Broker Overhead Total Memory 21 GB 2.3 GB 610 MB © 2008 Oracle Corporation
  • 16. When to Use DRCP • DRCP can be useful when any of the following apply: • Large number of connections need to be supported with minimum memory usage on database host • Applications mostly use same database credentials for all connections • Applications acquire a database connection, work on it for a relatively short duration, and then release it • Multiple web server hosts • Connections look identical in terms of session settings, for example date format settings and PL/SQL package state • Generally true for majority of web applications © 2008 Oracle Corporation
  • 17. Starting and Configuring DRCP • Start the pool: SQL> execute dbms_connection_pool.start_pool(); • Optionally Configure the Pool: SQL> execute dbms_connection_pool.configure_pool( pool_name => 'SYS_DEFAULT_CONNECTION_POOL', minsize => 4, maxsize => 40, incrsize => 2, session_cached_cursors => 20, inactivity_timeout => 300, max_think_time => 600, max_use_session => 500000, max_lifetime_session => 86400); © 2008 Oracle Corporation
  • 18. DRCP: System Components • Connection Broker • New in Oracle Database 11g • Oracle instance background daemon • Handles initial authentication • Handles subsequent connect/disconnect requests • Pooled Servers • New in Oracle Database 11g • Oracle instance background slave processes • Oracle 11g OCI Client library • DRCP aware © 2008 Oracle Corporation
  • 19. DRCP: Connecting © 2008 Oracle Corporation
  • 20. DRCP: Doing Work © 2008 Oracle Corporation
  • 21. DRCP: After Disconnecting © 2008 Oracle Corporation
  • 22. DRCP: Pool Sharing • There is one physical pool in Oracle 11g • Connections are never shared across different database usernames for security • CONNECTION_CLASS • Allows for multiple logical sub pools per user • Allows clients to identify the “type” of connection required • Only clients with same “username.connection_class” share connections © 2008 Oracle Corporation
  • 23. DRCP: Pool Sharing © 2008 Oracle Corporation
  • 24. Configuring DRCP for a Very Large #Connections • Bump up O/S file descriptor limits • E.g on Linux: /etc/security/limits.conf • oracle HARD NOFILE 40000 • Configuring additional brokers • Helps if O/S has a small per process file descriptor limit • dbms_connection_pool_alter_param • NUM_CBROK (default=1) • Configure the max number of connections per broker • Helps distribute connections across multiple brokers • dbms_connection_pool_alter_param • MAXCONN_CBROK (default=40,000) © 2008 Oracle Corporation
  • 25. DRCP: Key Optimizations © 2008 Oracle Corporation
  • 26. DRCP: Key Optimizations • No extra round-trips or hops • Connection request bundled with first work request • Broker not involved in processing work requests • Connection close request is asynchronous • Connection to Broker • Kept alive even after PHP “closes” the connection • Allows for faster re-connection • Optimization for low end (#clients < #pooled servers) • Behaves like dedicated servers at low end • Switches to pooled automatically at high end © 2008 Oracle Corporation
  • 27. 2008: Connecting PHP to DRCP: The Enhanced OCI8 Extension © 2008 Oracle Corporation
  • 28. What is OCI8? • Main Oracle Database extension for PHP • Open source and part of PHP <?php $c = oci_connect('un', 'pw', '//localhost/XE'); $s = oci_parse($c, 'select * from employees'); oci_execute($s); while ($row = oci_fetch_array($s))‫‏‬ foreach ($row as $item)‫‏‬ print $item; ?> © 2008 Oracle Corporation
  • 29. Three Tier Web Model Apache PHP OCI8 Extension Oracle Client Libraries Web User Mid Tier Oracle Database 9iR2, 10g, 11g 8i, 9i, 10g, 11g Oracle Client Any platform Any platform © 2008 Oracle Corporation
  • 30. Get the Latest OCI8 • php.net • Source code, Windows binaries • PECL - PHP Extension Community Library • Useful for updating PHP 4 with new OCI8 • oss.oracle.com/projects/php • RPMs for Linux with OCI8 and PDO_OCI © 2008 Oracle Corporation
  • 31. Installation Steps for DRCP with PHP • Install Oracle Database 11.1.0.6 (with one patch for bug 6474441) • Download • PHP 5.3 (has OCI8 1.3) OR • PHP 4.3.9 – 5.2 and OCI8 1.3.4 from Pecl • Build PHP using Oracle 11g client libraries from ORACLE_HOME or Instant Client © 2008 Oracle Corporation
  • 32. Using DRCP with PHP • No application code change required • Unchanged PHP API • Deployment decision to use DRCP • Application can still talk to other Oracle versions • Configure and start DRCP on Oracle Database 11g • Setup O/S file descriptor limits • Configure pool limits, timeouts, #brokers etc as required dbms_connection_pool.start_pool • Set php.ini parameters oci8.connection_class = MYAPP oci8.old_oci_close_semantics = Off (which is default) © 2008 Oracle Corporation
  • 33. Some DRCP Best Practices for PHP • Close connections when doing non-DB processing • Allows DRCP to serve more clients with the same pool size • Explicitly control commits and rollbacks • Provides deterministic transaction behavior that is portable to older OCI8 versions • Setting oci8.connection_class • Ensure that applications under a connection_class have uniform session state expectations • Use the same oci8.connection_class value across machines hosting the same app to maximize DRCP sharing • With DRCP: LOGON triggers can fire multiple times • Still useful for setting session values like date formats • Monitor DRCP performance with V$CPOOL_STATS © 2008 Oracle Corporation
  • 34. DRCP Demo © 2008 Oracle Corporation
  • 35. Non DRCP Performance © 2008 Oracle Corporation
  • 36. DRCP Performance © 2008 Oracle Corporation
  • 37. DRCP Benchmark © 2008 Oracle Corporation
  • 38. A DRCP Benchmark • PHP script • connect, query, disconnect, sleep 1 second • Server • Dual CPU Intel P4/Xeon 3.00GHz • 2GB RAM • 32bit Red Hat Enterprise Linux 4 • DRCP • 100 pooled servers, one connection broker • Clients • 3 similar machines • Apache • See PHP DRCP Whitepaper for details © 2008 Oracle Corporation
  • 39. PHP DRCP Benchmark - Throughput (Throughput is executes per second)‫‏‬ © 2008 Oracle Corporation
  • 40. PHP DRCP Benchmark - Memory © 2008 Oracle Corporation
  • 41. Other OCI8 1.3 Changes • Fixed PHP OCI8 connection ref-counting edge cases • Better detection of dead sessions and bounced DBs • Automatic cleanup of dead, idle connections • Closing persistent connections can now rollback © 2008 Oracle Corporation
  • 42. Horizontal Scalability with Oracle Database 11g Real Application Clusters (RAC) © 2008 Oracle Corporation
  • 43. RAC Architecture © 2008 Oracle Corporation
  • 44. DRCP on RAC • Horizontal scaling as your database load increases • N*C20K with N RAC nodes!! • DRCP starts on all RAC instances • Same pool limits apply to each individual RAC instance • min, max • number of brokers • max connections per broker • DRCP connections benefit from TNS Listener connection load balancing across RAC instances © 2008 Oracle Corporation
  • 45. What about High Availability? • Fast Application Notification (FAN) • When DB node or network fails • Database generates FAN events • Oracle error returned without TCP timeout delay • PHP application is not blocked for TCP timeout – it can immediately reconnect to surviving DB instance $conn = doConnect(); $err = doSomeWork($conn); if (isConnectionError($err)) { // reconnect, find what was committed, and retry $conn = doConnect(); $err = checkApplicationStateAndContinueWork($conn); } if ($err) handleError($err); © 2008 Oracle Corporation
  • 46. Fast Application Notification • High Availability feature for PHP with RAC or Data Guard with physical standby • Usable with or without DRCP • Available from Oracle 10gR2 • OCI8 1.3 supports FAN © 2008 Oracle Corporation
  • 47. FAN Configuration • Tell DB to broadcast FAN Events SQL> execute dbms_service.modify_service(service_name =>'SALES', aq_ha_notifications =>TRUE); • Configure PHP's php.ini so OCI8 listens for FAN events oci8.events = On • Optionally add re-connection code to PHP application © 2008 Oracle Corporation
  • 48. Oracle Resources • Free Oracle Techology Network (OTN)‫‏‬ PHP Developer Center otn.oracle.com/php • Underground PHP and Oracle Manual • Whitepapers, Articles, FAQs, links to blogs, Jdeveloper PHP Extension, PHP RPMs • Information christopher.jones@oracle.com blogs.oracle.com/opal • SQL and PL/SQL Questions asktom.oracle.com • ISVs and hardware vendors oraclepartnernetwork.oracle.com © 2008 Oracle Corporation
  • 49. PHP Scalability and High Availability Whitepaper • Excellent introduction to PHP with DRCP and FAN • www.oracle.com/technology/tech/php/pdf/php-scalability-ha-twp.pdf © 2008 Oracle Corporation
  • 50. Oracle Technology Network PHP Developer Center • Free • Articles • Install guides • Underground PHP and Oracle Manual • Online forum • PHP RPMs • Oracle JDeveloper 10g PHP extension otn.oracle.com/php © 2008 Oracle Corporation
  • 51. The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remain at the sole discretion of Oracle. © 2008 Oracle Corporation
  • 52. © 2008 Oracle Corporation