SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
Solving the C20K Problem: 
PHP Performance and Scalability
Kuassi Mensah, Group Product Manager 
Oracle Corporation
The C20K Problem 
Genesis: the C10K Problem

• Circa 2003: “How to write a server which can handle 
  10.000 parallel connections”
• http://www.kegel.com/c10k.html
The C20K Problem

• Can a single commodity database server handle 20K 
  simultaneous PHP users? 




              …
Solving C20K with Built­In Database  
    Mechanisms in PHP
•   Database Resident Connection Pool
•   Query Change Notification
•   Client­side Query Result Cache
•   Scaling with Stored Procedures
•   Database Built­in Partitioning
•   Scaling Very Complex Queries
•   Scaling Queries with Advanced Data Compression
•   Database Failover
•   Case Study: Community Connect
<Insert Picture Here>



Database Resident 
 Connection Pool
PHP Lacks Proper Connection Pool

Current choices: 
2. Persistent Connections
     •      Connection not automatically closed at                              
            script  completion
     • Fast for subsequent connections but 
            holds resources when application idle 
     ⇒ Over­allocation – Waste of system resources


•        Non Persistent Connections
     • Connection closed at script completion
     ⇒ High connect times                                                 
     ⇒ Unnecessary connect/disconnect CPU load
Database Resident Connection Pool  
                                     Dedicated servers
Connection           Connection 
( DB handle)           Broker

                                         Session
                                          Session
                                            Session
                                      (User Handle)
                               1             Session
                                       (User Handle)
                                              Session
                                        (User Handle)
                                          (User Handle)
               Oracle Net                  (User Handle)
                     2

 • Pool of dedicated servers
 • (1) Server allocated/locked on  Appl. Connect 
 • (2) Direct server access after handoff
 • (3) Server released on Appl. ConnClose .
 • No man­in­the­middle, low latency
Database Resident Connection Pool

 • Pools a set of dedicated servers on each database
   instance 
 • Designed primarily for  process systems (PHP)
    1/ Just Change the Connect String 
<?php
$c = oci_pconnect("phpweb", "phpweb", "//localhost/orcl:pooled");
$s = oci_parse($c, 'select * from employees');
oci_execute($s);
oci_fetch_all($s, $res);
var_dump($res);
?>

     2/ Zero code change: change TNS alias

 • Currently in OCI, C/C++, PHP (OCI8), Python
DRCP in Action – PHP Connection
                                                        Pooled Database 
                                                            Servers

    PHP                                3                                   Busy Server
                                                                            Idle Server
                                                                           PGA memory
              oci                                                          Session memory
                  _   pco
                         n   nec
                                 t()
                                           35k                               Idle Server




Apache Processes       1                            2         .
                                                              .
                                           35k
                                ct(
                                   )                          .
                           ne
                       c on            Connection
                    i_p
    PHP        oc
                                         Broker
DRCP in Action – Closing Connection
                                               Pooled Database 
                                                   Servers

               oci_close()                                         Busy Server
    PHP
                                                                  PGA memory
                                  Connection                      Session memory
                                    Broker
                                                                   Idle Server
                                    35k



Apache Processes
                    4
                                                       .
                                                       .
    PHP                             35k
                   oci_close() 
                                                       .
DRCP in Action – After Close
                                          Pooled Database 
                                              Servers

                                                              Idle Server
    PHP
                                                             PGA memory
                             Connection                      Session memory
                socket         Broker
              connection 
                               35k                            Idle Server




Apache Processes   5                              .
                                                  .
    PHP                        35k
                                                  .



                 socket 
               connection 
Configuring and Starting DRCP 

•       Configure the Pool (Optional) 
      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);

•       Start the pool
        SQL> execute dbms_connection_pool.start_pool(); 
C20K, Yes We Did!
 PHP DRCP Benchmark
• PHP script
  • connect, query, disconnect, sleep 1 second
• Database Server
  • Dual CPU Intel P4/Xeon ­­ 3.00GHz ­ 2GB RAM
  • 32bit Red Hat Enterprise Linux 4
• DRCP
  • 100 pooled servers, one connection broker
  • 0.5% nb users simultaneously active 
• PHP Hosts
  • 3  machines similar to Db Server
  • Apache
• PHP DRCP Whitepaper: http://tinyurl.com/554cz4
C20K, Yes We Did!
PHP DRCP Benchmark ­ Throughput
C20K, Yes We Did!
PHP DRCP Benchmark ­ Memory
<Insert Picture Here>



Query Change Notification
Built­in Query Change Notification 

Problem to solve:
Be notified when changes in the database invalidates 
an existing query result set
                                                            2.Upon  Change 
                                                            (DMLImpacting 
 <?php
                                                            the result set)
 …                    Callout
 4.Invalidate cache
 5.repopulate cache
 …
 ?>
                                                            1. Register
                                3.Automatic                 the query
   Custom cache                    Notification 
                                  (Java or PL/SQL database job
                                   as noificaion handler)
<Insert Picture Here>



Client­Side Query Result Cache
MemCached 
query = "select name, address, phone, acctbal from custumer,
nation where c_nationkey= n_nationkey;
key = md5($query);
If (serval=$memcache->get($key) {
    res = oci_execute($query)
    ser = serialize($res);           Problems
    memcache->set($key, $ser);       • Cache Invalidation
}                                    • Additional 
res = unserialize($serval);            Memcached Servers

                                      MemCached


                 PHP




               Database
Built­in Client Query Result Cache  
$query = "select /*+ RESULT_CACHE */ name,
address, phone, acctbal from customer, nation
where c_nationkey=n_nationkey;




                     PHP




                   Database

• May be Faster than Memcached !
• No additional cache server(s)  but process level cache
• Automatic Cache Invalidation 
• Transparent OCI, PHP, Ruby, ODP.Net, ODBC, JDBC 
Configuring Client Query Result Cache 

1/ Configure the Cache
    Database Server Configuration (init.ora)
    client_result_cache_size=200M
    client_result_cache_lag=5000
   
   Client Configuration (sqlnet.ora) 
    OCI_QUERY_CACHE_SIZE=200M
    OCI_QUERY_CACHE_MAXROWS=20


2/ Caching the Result Set
    Using Hints
    select /*+ result_cache */ * from employees

       Alternatively, at Table level  
     alter table emp result_cache (mode force);
Client Query Result Cache
            5­8 x Faster
900%

800%

700%

600%

500%

400%

300%

200%

100%

 0%
       10          100     1000
<Insert Picture Here>



Scaling with Stored Procedures
Stored Procedures instead of Multiple 
Unique Statements
  Unique Statements   Stored Procedures (PL/SQL or Java)


    PHP                       PHP
                                   Stored Procedure
                                   Call
             Calls

                                 Java
                         JDBC
                         Calls


       SQL                       SQL
                        Faster, up to 10X! 
PHP Bulk Insert  

function do_transactional_insert($conn, $array)
{
    $s = oci_parse($conn,
           'insert into ptab (pdata) values (:bv)');
    oci_bind_by_name($s, ':bv', $v, 20, SQLT_CHR);
    foreach ($array as $v)
      $r = oci_execute($s, OCI_DEFAULT);
    oci_commit($con);
}

Elapsed time: 8 millisec 
PHP Bulk Insert with Stored Procedure

function do_bulk_insert($conn, $array)
{
    $s = oci_parse($conn,
             'begin mypkg.myproc(:c1); end;');
    oci_bind_array_by_name($s, ":c1", $array,
             count($array), -1, SQLT_CHR);
    oci_execute($s);
}



Elapsed time: 2 millisec (4X speed up; may vary!) 
 
PL/SQL Stored Proc. (Bulk insert)
create or replace package mypkg as
 type arrtype is table of varchar2(20)
    index by pls_integer;
 procedure myproc(p1 in arrtype);
end mypkg;
create or replace package body mypkg as
 procedure myproc(p1 in arrtype) is
 begin
    forall i in indices of p1
      insert into ptab values (p1(i));
 end myproc;
end mypkg;
Using Java Stored Procedures in PHP 

•    Secure Credit­Card Processing     • Implement Parsers for various File 
     using JSSE                          Formats (txt, zip, xml, binary)
•    Custom Alert applications that    • Implement Image Transformation and 
     monitor business data               Format Conversion (GIF, PNG, 
•    Sending emails with attachment      JPEG, etc)
     from within the database
                                       • Implement database­resident Content 
•    Produce PDF files from Result 
     Set                                 Management System
•    Execute external OS commands      • HTTP Call­Out
     and external procedures           • JDBC Call­Out
•    Implement Md5 CRC                 • RMI Call­Out to SAP
•    Publish Repository Content to     • Web Services Call­Out
     Portal
                                       • Messaging across Tiers
•    Portable Logistic Applications
                                       • RESTful Database Web Services*
                                       • Db Resident Lucene*


                                       * http://marceloochoa.blogspot.com/
<Insert Picture Here>



Database Built­in Partitioning
Built­in Partitioning 


                              Orders
                      Line
Inventory            Items
            Orders             Jan

                                       Orders


                                        Feb
Back                  Pick                      Orders
Orders                Lists


                                                 Mar
<Insert Picture Here>



Scaling Very Complex SQL 
         Queries 
Scaling Very Complex SQL Queries 

Problem to Solve: Query Sales and Quantity by Year,
Department, Class and Country

The SQL Query 
SELECT SUM(s.quantity) AS quantity, SUM(s.sales) AS sales,
    t.calendar_year_name, p.department_name, c.class_name,
    cu.country_name
FROM times t, products p, channels c, customers cu,
   sales_fact s
WHERE p.item_key = s.product AND s.day_key = t.day_key AND
       s.channel = c.channel_key AND
       s.customer = cu.customer_key
GROUP BY p.department_name, t.calendar_year_name,
   c.class_name, cu.country_name;
Built­in OLAP Engine
PHP
Cube Organized Materialized Views
  Transparent to SQL Queries

          SQL Query                         Materialized Views

Region                 Date



                                Query
                                Rewrite



Product               Channel
                                Automatic       OLAP Cube
                                 Refresh
<Insert Picture Here>



Scaling with Advanced Data 
       Compression
Scaling w. Advanced Data Compression
             Going Green 
                                  2500
                                                             Storage 
                                  2000
                                                               Reduction
                                                             More than 70% (up to 4X) 
            Compression                                      Storage Savings
                                  1500




                             MB
       No Compression             1000


                                   500


                                     0




                   Table Scan Performance                    DML Performance
                                                                    Less than 
             0.4                                        40
                                                                    3% Overhead
                             2.5 x Faster
             0.3                            (seconds)   30
(seconds)




                                              Time 
  Time 




             0.2                                        20



             0.1                                        10



              0                                         0
Database Failover
Oracle Database 11g RAC 
Shared Disk Architecture
Fast Application Notification of Events

• Pub/Sub Event Notification (AQ based)
• High Availability feature for PHP with RAC or Data­ 
  Guard­with­physical­standby
• When DB node or network fails
  • Database generates FAN events
  • PHP error returned without TCP timeout delay
  • PHP application reconnect to surviving instance

• OCI8 1.3.1 Beta supports FAN
Database Failover – Application View




              Fast Connection Failover


  Invalid Connections              Valid Connections

     Inst x                              Inst y
Configuring Fast Application 
 Notification for PHP
• High Availability feature with RAC or DG
• Usable with or without DRCP
• Available from Oracle 10gR2
• OCI8 1.3 supports FAN 
5.Tell DB to broadcast FAN Events
   SQL> execute     
   dbms_service.modify_service(service_name =>'SALES', 
   aq_ha_notifications =>TRUE); 
6.Subscribe to FAN events 
   Example: Configure PHP for OCI8 to listen for FAN events
   oci8.events = On
7.Application to Re­connect
Database Failover in PHP 

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);
C(N*20)K Using DRCP and RAC

• Scale your database horizontally to 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
  www.oracle.com/technology/tech/php/pdf/php­scalability­ha­twp.pdf
<Insert Picture Here>



      Case Study 
Community Connect Inc.  
Xtreme Scalability
   Web Scale PHP Deployment

BlackPlanet.com 
• 19+ million users
• 500+ millions pages views
    per month 
• 100+ web servers
• 10+ databases (incl. RAC)
• ~ 50,000 conc. Users
• Case Studied by Gartner
    http://tinyurl.com/dg6rxm
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 
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
     kuassi.mensah@oracle.com
     christopher.jones@oracle.com
• SQL and PL/SQL Questions
     asktom.oracle.com
• ISVs and hardware vendors
       oraclepartnernetwork.oracle.com
Q & A
     Thank You

49

Weitere ähnliche Inhalte

Was ist angesagt?

Complex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBoxComplex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBoxbobmcwhirter
 
/* pOrt80BKK */ - PHP Day - PHP Performance with APC + Memcached for Windows
/* pOrt80BKK */ - PHP Day - PHP Performance with APC + Memcached for Windows/* pOrt80BKK */ - PHP Day - PHP Performance with APC + Memcached for Windows
/* pOrt80BKK */ - PHP Day - PHP Performance with APC + Memcached for WindowsFord AntiTrust
 
PostgreSQL Performance Tuning
PostgreSQL Performance TuningPostgreSQL Performance Tuning
PostgreSQL Performance Tuningelliando dias
 
Caching with Memcached and APC
Caching with Memcached and APCCaching with Memcached and APC
Caching with Memcached and APCBen Ramsey
 
Blue host openstacksummit_2013
Blue host openstacksummit_2013Blue host openstacksummit_2013
Blue host openstacksummit_2013Jun Park
 
Apc presentation
Apc presentationApc presentation
Apc presentationguestef8544
 
Service-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMixService-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMixBruce Snyder
 
Improving PHP Application Performance with APC
Improving PHP Application Performance with APCImproving PHP Application Performance with APC
Improving PHP Application Performance with APCvortexau
 
Rationally boost your symfony2 application with caching tips and monitoring
Rationally boost your symfony2 application with caching tips and monitoringRationally boost your symfony2 application with caching tips and monitoring
Rationally boost your symfony2 application with caching tips and monitoringGiulio De Donato
 
Linux Desktop Automation
Linux Desktop AutomationLinux Desktop Automation
Linux Desktop AutomationRui Lapa
 
Internship Project (Lasindu) WSO2
Internship Project (Lasindu) WSO2Internship Project (Lasindu) WSO2
Internship Project (Lasindu) WSO2lasinducharith
 
Bytebuf vs DirectByteBuffer
Bytebuf vs DirectByteBufferBytebuf vs DirectByteBuffer
Bytebuf vs DirectByteBufferMichael Fong
 
Rails Application Optimization Techniques & Tools
Rails Application Optimization Techniques & ToolsRails Application Optimization Techniques & Tools
Rails Application Optimization Techniques & Toolsguest05c09d
 
PostgreSQL High Availability via SLONY and PG POOL II
PostgreSQL High Availability via SLONY and PG POOL IIPostgreSQL High Availability via SLONY and PG POOL II
PostgreSQL High Availability via SLONY and PG POOL IICommand Prompt., Inc
 
Performance Optimization of Rails Applications
Performance Optimization of Rails ApplicationsPerformance Optimization of Rails Applications
Performance Optimization of Rails ApplicationsSerge Smetana
 
Java File I/O Performance Analysis - Part I - JCConf 2018
Java File I/O Performance Analysis - Part I - JCConf 2018Java File I/O Performance Analysis - Part I - JCConf 2018
Java File I/O Performance Analysis - Part I - JCConf 2018Michael Fong
 
HBase Coprocessor Introduction
HBase Coprocessor IntroductionHBase Coprocessor Introduction
HBase Coprocessor IntroductionSchubert Zhang
 

Was ist angesagt? (19)

Complex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBoxComplex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBox
 
/* pOrt80BKK */ - PHP Day - PHP Performance with APC + Memcached for Windows
/* pOrt80BKK */ - PHP Day - PHP Performance with APC + Memcached for Windows/* pOrt80BKK */ - PHP Day - PHP Performance with APC + Memcached for Windows
/* pOrt80BKK */ - PHP Day - PHP Performance with APC + Memcached for Windows
 
Apache con 2011 gd
Apache con 2011 gdApache con 2011 gd
Apache con 2011 gd
 
PostgreSQL Performance Tuning
PostgreSQL Performance TuningPostgreSQL Performance Tuning
PostgreSQL Performance Tuning
 
Caching with Memcached and APC
Caching with Memcached and APCCaching with Memcached and APC
Caching with Memcached and APC
 
Blue host openstacksummit_2013
Blue host openstacksummit_2013Blue host openstacksummit_2013
Blue host openstacksummit_2013
 
Apc presentation
Apc presentationApc presentation
Apc presentation
 
Service-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMixService-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMix
 
Improving PHP Application Performance with APC
Improving PHP Application Performance with APCImproving PHP Application Performance with APC
Improving PHP Application Performance with APC
 
Rationally boost your symfony2 application with caching tips and monitoring
Rationally boost your symfony2 application with caching tips and monitoringRationally boost your symfony2 application with caching tips and monitoring
Rationally boost your symfony2 application with caching tips and monitoring
 
Linux Desktop Automation
Linux Desktop AutomationLinux Desktop Automation
Linux Desktop Automation
 
Internship Project (Lasindu) WSO2
Internship Project (Lasindu) WSO2Internship Project (Lasindu) WSO2
Internship Project (Lasindu) WSO2
 
Bytebuf vs DirectByteBuffer
Bytebuf vs DirectByteBufferBytebuf vs DirectByteBuffer
Bytebuf vs DirectByteBuffer
 
Rails Application Optimization Techniques & Tools
Rails Application Optimization Techniques & ToolsRails Application Optimization Techniques & Tools
Rails Application Optimization Techniques & Tools
 
PostgreSQL High Availability via SLONY and PG POOL II
PostgreSQL High Availability via SLONY and PG POOL IIPostgreSQL High Availability via SLONY and PG POOL II
PostgreSQL High Availability via SLONY and PG POOL II
 
Performance Optimization of Rails Applications
Performance Optimization of Rails ApplicationsPerformance Optimization of Rails Applications
Performance Optimization of Rails Applications
 
Java File I/O Performance Analysis - Part I - JCConf 2018
Java File I/O Performance Analysis - Part I - JCConf 2018Java File I/O Performance Analysis - Part I - JCConf 2018
Java File I/O Performance Analysis - Part I - JCConf 2018
 
How DSL works on Ruby
How DSL works on RubyHow DSL works on Ruby
How DSL works on Ruby
 
HBase Coprocessor Introduction
HBase Coprocessor IntroductionHBase Coprocessor Introduction
HBase Coprocessor Introduction
 

Andere mochten auch

E-Business in Rural Communities
E-Business in Rural CommunitiesE-Business in Rural Communities
E-Business in Rural Communitieswebhostingguy
 
Configuring and Testing PHP Support in Microsoft Windows 2000 ...
Configuring and Testing PHP Support in Microsoft Windows 2000 ...Configuring and Testing PHP Support in Microsoft Windows 2000 ...
Configuring and Testing PHP Support in Microsoft Windows 2000 ...webhostingguy
 
Email Effective Security Practices: 10 Concrete Steps to Consider
Email Effective Security Practices: 10 Concrete Steps to ConsiderEmail Effective Security Practices: 10 Concrete Steps to Consider
Email Effective Security Practices: 10 Concrete Steps to Considerwebhostingguy
 
Introduction to Drupal 7 - Installing and configuring WYSIWYG editors in Drupal
Introduction to Drupal 7 - Installing and configuring WYSIWYG editors in DrupalIntroduction to Drupal 7 - Installing and configuring WYSIWYG editors in Drupal
Introduction to Drupal 7 - Installing and configuring WYSIWYG editors in DrupalKalin Chernev
 
Virtual Solution for Microsoft SQL Server
Virtual Solution for Microsoft SQL ServerVirtual Solution for Microsoft SQL Server
Virtual Solution for Microsoft SQL Serverwebhostingguy
 
How Inflation Begins
How Inflation BeginsHow Inflation Begins
How Inflation BeginsJeff Green
 
Configuring Windows 2000/XP IPsec for Site-to-Site VPN
Configuring Windows 2000/XP IPsec for Site-to-Site VPNConfiguring Windows 2000/XP IPsec for Site-to-Site VPN
Configuring Windows 2000/XP IPsec for Site-to-Site VPNwebhostingguy
 
SSHELCO Cataloging Presentation 2011
SSHELCO Cataloging Presentation 2011SSHELCO Cataloging Presentation 2011
SSHELCO Cataloging Presentation 2011William Fee
 
Dedicated Server Service Agreement
Dedicated Server Service AgreementDedicated Server Service Agreement
Dedicated Server Service Agreementwebhostingguy
 
Fotolog: Scaling the World's Largest Photo Blogging Community
Fotolog: Scaling the World's Largest Photo Blogging CommunityFotolog: Scaling the World's Largest Photo Blogging Community
Fotolog: Scaling the World's Largest Photo Blogging Communityfarhan "Frank"​ mashraqi
 
Running and Developing Tests with the Apache::Test Framework
Running and Developing Tests with the Apache::Test FrameworkRunning and Developing Tests with the Apache::Test Framework
Running and Developing Tests with the Apache::Test Frameworkwebhostingguy
 

Andere mochten auch (13)

E-Business in Rural Communities
E-Business in Rural CommunitiesE-Business in Rural Communities
E-Business in Rural Communities
 
Configuring and Testing PHP Support in Microsoft Windows 2000 ...
Configuring and Testing PHP Support in Microsoft Windows 2000 ...Configuring and Testing PHP Support in Microsoft Windows 2000 ...
Configuring and Testing PHP Support in Microsoft Windows 2000 ...
 
Email Effective Security Practices: 10 Concrete Steps to Consider
Email Effective Security Practices: 10 Concrete Steps to ConsiderEmail Effective Security Practices: 10 Concrete Steps to Consider
Email Effective Security Practices: 10 Concrete Steps to Consider
 
Introduction to Drupal 7 - Installing and configuring WYSIWYG editors in Drupal
Introduction to Drupal 7 - Installing and configuring WYSIWYG editors in DrupalIntroduction to Drupal 7 - Installing and configuring WYSIWYG editors in Drupal
Introduction to Drupal 7 - Installing and configuring WYSIWYG editors in Drupal
 
Hosting
HostingHosting
Hosting
 
Virtual Solution for Microsoft SQL Server
Virtual Solution for Microsoft SQL ServerVirtual Solution for Microsoft SQL Server
Virtual Solution for Microsoft SQL Server
 
How Inflation Begins
How Inflation BeginsHow Inflation Begins
How Inflation Begins
 
Configuring Windows 2000/XP IPsec for Site-to-Site VPN
Configuring Windows 2000/XP IPsec for Site-to-Site VPNConfiguring Windows 2000/XP IPsec for Site-to-Site VPN
Configuring Windows 2000/XP IPsec for Site-to-Site VPN
 
SSHELCO Cataloging Presentation 2011
SSHELCO Cataloging Presentation 2011SSHELCO Cataloging Presentation 2011
SSHELCO Cataloging Presentation 2011
 
ncdraft2.ppt
ncdraft2.pptncdraft2.ppt
ncdraft2.ppt
 
Dedicated Server Service Agreement
Dedicated Server Service AgreementDedicated Server Service Agreement
Dedicated Server Service Agreement
 
Fotolog: Scaling the World's Largest Photo Blogging Community
Fotolog: Scaling the World's Largest Photo Blogging CommunityFotolog: Scaling the World's Largest Photo Blogging Community
Fotolog: Scaling the World's Largest Photo Blogging Community
 
Running and Developing Tests with the Apache::Test Framework
Running and Developing Tests with the Apache::Test FrameworkRunning and Developing Tests with the Apache::Test Framework
Running and Developing Tests with the Apache::Test Framework
 

Ähnlich wie Solving the C20K Problem: 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
 
PHP & Performance
PHP & PerformancePHP & Performance
PHP & Performance毅 吕
 
php & performance
 php & performance php & performance
php & performancesimon8410
 
Sql server 2012 - always on deep dive - bob duffy
Sql server 2012 - always on deep dive - bob duffySql server 2012 - always on deep dive - bob duffy
Sql server 2012 - always on deep dive - bob duffyAnuradha
 
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...Flink Forward
 
Load Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - SlidesLoad Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - SlidesSeveralnines
 
Sql Server 2005 Memory Internals
Sql Server 2005 Memory InternalsSql Server 2005 Memory Internals
Sql Server 2005 Memory InternalsDmitry Geyzersky
 
Livio slides-libflexsc-usenix-atc11
Livio slides-libflexsc-usenix-atc11Livio slides-libflexsc-usenix-atc11
Livio slides-libflexsc-usenix-atc11Livio Soares
 
High Performance Drupal Sites
High Performance Drupal SitesHigh Performance Drupal Sites
High Performance Drupal SitesAbayomi Ayoola
 
Multi-Tenancy Kafka cluster for LINE services with 250 billion daily messages
Multi-Tenancy Kafka cluster for LINE services with 250 billion daily messagesMulti-Tenancy Kafka cluster for LINE services with 250 billion daily messages
Multi-Tenancy Kafka cluster for LINE services with 250 billion daily messagesLINE Corporation
 
A memcached implementation in Java
A memcached implementation in JavaA memcached implementation in Java
A memcached implementation in Javaelliando dias
 
Share point 2013 distributed cache
Share point 2013 distributed cacheShare point 2013 distributed cache
Share point 2013 distributed cacheMichael Nokhamzon
 
Common issues with Apache Kafka® Producer
Common issues with Apache Kafka® ProducerCommon issues with Apache Kafka® Producer
Common issues with Apache Kafka® Producerconfluent
 
Degrading Performance? You Might be Suffering From the Small Files Syndrome
Degrading Performance? You Might be Suffering From the Small Files SyndromeDegrading Performance? You Might be Suffering From the Small Files Syndrome
Degrading Performance? You Might be Suffering From the Small Files SyndromeDatabricks
 
DPC2007 PHP And Oracle (Kuassi Mensah)
DPC2007 PHP And Oracle (Kuassi Mensah)DPC2007 PHP And Oracle (Kuassi Mensah)
DPC2007 PHP And Oracle (Kuassi Mensah)dpc
 
PHP Performance with APC + Memcached
PHP Performance with APC + MemcachedPHP Performance with APC + Memcached
PHP Performance with APC + MemcachedFord AntiTrust
 
Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…
Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…
Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…Atwix
 

Ähnlich wie Solving the C20K Problem: 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
 
Top ten-list
Top ten-listTop ten-list
Top ten-list
 
PHP & Performance
PHP & PerformancePHP & Performance
PHP & Performance
 
php & performance
 php & performance php & performance
php & performance
 
Sql server 2012 - always on deep dive - bob duffy
Sql server 2012 - always on deep dive - bob duffySql server 2012 - always on deep dive - bob duffy
Sql server 2012 - always on deep dive - bob duffy
 
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
 
MySQL Replication
MySQL ReplicationMySQL Replication
MySQL Replication
 
PostgreSQL Query Cache - "pqc"
PostgreSQL Query Cache - "pqc"PostgreSQL Query Cache - "pqc"
PostgreSQL Query Cache - "pqc"
 
Load Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - SlidesLoad Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - Slides
 
Sql Server 2005 Memory Internals
Sql Server 2005 Memory InternalsSql Server 2005 Memory Internals
Sql Server 2005 Memory Internals
 
Livio slides-libflexsc-usenix-atc11
Livio slides-libflexsc-usenix-atc11Livio slides-libflexsc-usenix-atc11
Livio slides-libflexsc-usenix-atc11
 
High Performance Drupal Sites
High Performance Drupal SitesHigh Performance Drupal Sites
High Performance Drupal Sites
 
Multi-Tenancy Kafka cluster for LINE services with 250 billion daily messages
Multi-Tenancy Kafka cluster for LINE services with 250 billion daily messagesMulti-Tenancy Kafka cluster for LINE services with 250 billion daily messages
Multi-Tenancy Kafka cluster for LINE services with 250 billion daily messages
 
A memcached implementation in Java
A memcached implementation in JavaA memcached implementation in Java
A memcached implementation in Java
 
Share point 2013 distributed cache
Share point 2013 distributed cacheShare point 2013 distributed cache
Share point 2013 distributed cache
 
Common issues with Apache Kafka® Producer
Common issues with Apache Kafka® ProducerCommon issues with Apache Kafka® Producer
Common issues with Apache Kafka® Producer
 
Degrading Performance? You Might be Suffering From the Small Files Syndrome
Degrading Performance? You Might be Suffering From the Small Files SyndromeDegrading Performance? You Might be Suffering From the Small Files Syndrome
Degrading Performance? You Might be Suffering From the Small Files Syndrome
 
DPC2007 PHP And Oracle (Kuassi Mensah)
DPC2007 PHP And Oracle (Kuassi Mensah)DPC2007 PHP And Oracle (Kuassi Mensah)
DPC2007 PHP And Oracle (Kuassi Mensah)
 
PHP Performance with APC + Memcached
PHP Performance with APC + MemcachedPHP Performance with APC + Memcached
PHP Performance with APC + Memcached
 
Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…
Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…
Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…
 

Mehr von webhostingguy

MySQL and memcached Guide
MySQL and memcached GuideMySQL and memcached Guide
MySQL and memcached Guidewebhostingguy
 
Novell® iChain® 2.3
Novell® iChain® 2.3Novell® iChain® 2.3
Novell® iChain® 2.3webhostingguy
 
Load-balancing web servers Load-balancing web servers
Load-balancing web servers Load-balancing web serversLoad-balancing web servers Load-balancing web servers
Load-balancing web servers Load-balancing web serverswebhostingguy
 
SQL Server 2008 Consolidation
SQL Server 2008 ConsolidationSQL Server 2008 Consolidation
SQL Server 2008 Consolidationwebhostingguy
 
Master Service Agreement
Master Service AgreementMaster Service Agreement
Master Service Agreementwebhostingguy
 
PHP and MySQL PHP Written as a set of CGI binaries in C in ...
PHP and MySQL PHP Written as a set of CGI binaries in C in ...PHP and MySQL PHP Written as a set of CGI binaries in C in ...
PHP and MySQL PHP Written as a set of CGI binaries in C in ...webhostingguy
 
Dell Reference Architecture Guide Deploying Microsoft® SQL ...
Dell Reference Architecture Guide Deploying Microsoft® SQL ...Dell Reference Architecture Guide Deploying Microsoft® SQL ...
Dell Reference Architecture Guide Deploying Microsoft® SQL ...webhostingguy
 
Managing Diverse IT Infrastructure
Managing Diverse IT InfrastructureManaging Diverse IT Infrastructure
Managing Diverse IT Infrastructurewebhostingguy
 
Web design for business.ppt
Web design for business.pptWeb design for business.ppt
Web design for business.pptwebhostingguy
 
IT Power Management Strategy
IT Power Management Strategy IT Power Management Strategy
IT Power Management Strategy webhostingguy
 
Excel and SQL Quick Tricks for Merchandisers
Excel and SQL Quick Tricks for MerchandisersExcel and SQL Quick Tricks for Merchandisers
Excel and SQL Quick Tricks for Merchandiserswebhostingguy
 
Parallels Hosting Products
Parallels Hosting ProductsParallels Hosting Products
Parallels Hosting Productswebhostingguy
 
Microsoft PowerPoint presentation 2.175 Mb
Microsoft PowerPoint presentation 2.175 MbMicrosoft PowerPoint presentation 2.175 Mb
Microsoft PowerPoint presentation 2.175 Mbwebhostingguy
 
Installation of MySQL 5.1 Cluster Software on the Solaris 10 ...
Installation of MySQL 5.1 Cluster Software on the Solaris 10 ...Installation of MySQL 5.1 Cluster Software on the Solaris 10 ...
Installation of MySQL 5.1 Cluster Software on the Solaris 10 ...webhostingguy
 

Mehr von webhostingguy (20)

File Upload
File UploadFile Upload
File Upload
 
MySQL and memcached Guide
MySQL and memcached GuideMySQL and memcached Guide
MySQL and memcached Guide
 
Novell® iChain® 2.3
Novell® iChain® 2.3Novell® iChain® 2.3
Novell® iChain® 2.3
 
Load-balancing web servers Load-balancing web servers
Load-balancing web servers Load-balancing web serversLoad-balancing web servers Load-balancing web servers
Load-balancing web servers Load-balancing web servers
 
SQL Server 2008 Consolidation
SQL Server 2008 ConsolidationSQL Server 2008 Consolidation
SQL Server 2008 Consolidation
 
What is mod_perl?
What is mod_perl?What is mod_perl?
What is mod_perl?
 
What is mod_perl?
What is mod_perl?What is mod_perl?
What is mod_perl?
 
Master Service Agreement
Master Service AgreementMaster Service Agreement
Master Service Agreement
 
Notes8
Notes8Notes8
Notes8
 
PHP and MySQL PHP Written as a set of CGI binaries in C in ...
PHP and MySQL PHP Written as a set of CGI binaries in C in ...PHP and MySQL PHP Written as a set of CGI binaries in C in ...
PHP and MySQL PHP Written as a set of CGI binaries in C in ...
 
Dell Reference Architecture Guide Deploying Microsoft® SQL ...
Dell Reference Architecture Guide Deploying Microsoft® SQL ...Dell Reference Architecture Guide Deploying Microsoft® SQL ...
Dell Reference Architecture Guide Deploying Microsoft® SQL ...
 
Managing Diverse IT Infrastructure
Managing Diverse IT InfrastructureManaging Diverse IT Infrastructure
Managing Diverse IT Infrastructure
 
Web design for business.ppt
Web design for business.pptWeb design for business.ppt
Web design for business.ppt
 
IT Power Management Strategy
IT Power Management Strategy IT Power Management Strategy
IT Power Management Strategy
 
Excel and SQL Quick Tricks for Merchandisers
Excel and SQL Quick Tricks for MerchandisersExcel and SQL Quick Tricks for Merchandisers
Excel and SQL Quick Tricks for Merchandisers
 
OLUG_xen.ppt
OLUG_xen.pptOLUG_xen.ppt
OLUG_xen.ppt
 
Parallels Hosting Products
Parallels Hosting ProductsParallels Hosting Products
Parallels Hosting Products
 
Microsoft PowerPoint presentation 2.175 Mb
Microsoft PowerPoint presentation 2.175 MbMicrosoft PowerPoint presentation 2.175 Mb
Microsoft PowerPoint presentation 2.175 Mb
 
Reseller's Guide
Reseller's GuideReseller's Guide
Reseller's Guide
 
Installation of MySQL 5.1 Cluster Software on the Solaris 10 ...
Installation of MySQL 5.1 Cluster Software on the Solaris 10 ...Installation of MySQL 5.1 Cluster Software on the Solaris 10 ...
Installation of MySQL 5.1 Cluster Software on the Solaris 10 ...
 

Solving the C20K Problem: PHP Performance and Scalability