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?

Blue host openstacksummit_2013
Blue host openstacksummit_2013Blue host openstacksummit_2013
Blue host openstacksummit_2013Jun Park
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...Edward Burns
 
Caching with Memcached and APC
Caching with Memcached and APCCaching with Memcached and APC
Caching with Memcached and APCBen Ramsey
 
Lightweight Grids With Terracotta
Lightweight Grids With TerracottaLightweight Grids With Terracotta
Lightweight Grids With TerracottaPT.JUG
 
Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...
Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...
Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...elliando dias
 
What’s new in Nuxeo 5.2?
What’s new in Nuxeo 5.2?What’s new in Nuxeo 5.2?
What’s new in Nuxeo 5.2?Nuxeo
 
ApacheCon EU 2014: Enterprise Development with Apache Karaf
ApacheCon EU 2014: Enterprise Development with Apache KarafApacheCon EU 2014: Enterprise Development with Apache Karaf
ApacheCon EU 2014: Enterprise Development with Apache KarafAchim Nierbeck
 
Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions Haim Yadid
 
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
 
Performance scalability brandonlyon
Performance scalability brandonlyonPerformance scalability brandonlyon
Performance scalability brandonlyonDigitaria
 
Integrated Cache on Netscaler
Integrated Cache on NetscalerIntegrated Cache on Netscaler
Integrated Cache on NetscalerMark Hillick
 
B2 2006 tomcat_clusters
B2 2006 tomcat_clustersB2 2006 tomcat_clusters
B2 2006 tomcat_clustersSteve Feldman
 
Cloud Foundry, Spring and Vaadin
Cloud Foundry, Spring and VaadinCloud Foundry, Spring and Vaadin
Cloud Foundry, Spring and VaadinJoshua Long
 
Improving PHP Application Performance with APC
Improving PHP Application Performance with APCImproving PHP Application Performance with APC
Improving PHP Application Performance with APCvortexau
 

Was ist angesagt? (19)

Blue host openstacksummit_2013
Blue host openstacksummit_2013Blue host openstacksummit_2013
Blue host openstacksummit_2013
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
 
Caching with Memcached and APC
Caching with Memcached and APCCaching with Memcached and APC
Caching with Memcached and APC
 
Lightweight Grids With Terracotta
Lightweight Grids With TerracottaLightweight Grids With Terracotta
Lightweight Grids With Terracotta
 
Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...
Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...
Distributed Caching Using the JCACHE API and ehcache, Including a Case Study ...
 
What’s new in Nuxeo 5.2?
What’s new in Nuxeo 5.2?What’s new in Nuxeo 5.2?
What’s new in Nuxeo 5.2?
 
Os Harkins
Os HarkinsOs Harkins
Os Harkins
 
ApacheCon EU 2014: Enterprise Development with Apache Karaf
ApacheCon EU 2014: Enterprise Development with Apache KarafApacheCon EU 2014: Enterprise Development with Apache Karaf
ApacheCon EU 2014: Enterprise Development with Apache Karaf
 
Connection Pooling
Connection PoolingConnection Pooling
Connection Pooling
 
MySQL Replication
MySQL ReplicationMySQL Replication
MySQL Replication
 
Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions
 
Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)Batching and Java EE (jdk.io)
Batching and Java EE (jdk.io)
 
PostgreSQL Query Cache - "pqc"
PostgreSQL Query Cache - "pqc"PostgreSQL Query Cache - "pqc"
PostgreSQL Query Cache - "pqc"
 
Performance scalability brandonlyon
Performance scalability brandonlyonPerformance scalability brandonlyon
Performance scalability brandonlyon
 
Integrated Cache on Netscaler
Integrated Cache on NetscalerIntegrated Cache on Netscaler
Integrated Cache on Netscaler
 
Memcached Study
Memcached StudyMemcached Study
Memcached Study
 
B2 2006 tomcat_clusters
B2 2006 tomcat_clustersB2 2006 tomcat_clusters
B2 2006 tomcat_clusters
 
Cloud Foundry, Spring and Vaadin
Cloud Foundry, Spring and VaadinCloud Foundry, Spring and Vaadin
Cloud Foundry, Spring and Vaadin
 
Improving PHP Application Performance with APC
Improving PHP Application Performance with APCImproving PHP Application Performance with APC
Improving PHP Application Performance with APC
 

Ä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
 
/* 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
 
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
 
MHA (MySQL High Availability): Getting started & moving past quirks
MHA (MySQL High Availability): Getting started & moving past quirksMHA (MySQL High Availability): Getting started & moving past quirks
MHA (MySQL High Availability): Getting started & moving past quirksColin Charles
 

Ä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
 
/* 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
 
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...
 
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…
 
MHA (MySQL High Availability): Getting started & moving past quirks
MHA (MySQL High Availability): Getting started & moving past quirksMHA (MySQL High Availability): Getting started & moving past quirks
MHA (MySQL High Availability): Getting started & moving past quirks
 

Mehr von webhostingguy

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
 
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
 

Mehr von webhostingguy (20)

File Upload
File UploadFile Upload
File Upload
 
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
 
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
 

Solving the C20K Problem: PHP Performance and Scalability