Heavy Web Optimization: Backend
Upcoming SlideShare
Loading in...5
×
 

Heavy Web Optimization: Backend

on

  • 5,438 views

Slide in a seminar about backend optimization with PHP.

Slide in a seminar about backend optimization with PHP.

Talks about php, caching, scalability, amazon web service

Statistics

Views

Total Views
5,438
Views on SlideShare
4,412
Embed Views
1,026

Actions

Likes
3
Downloads
72
Comments
0

2 Embeds 1,026

http://bloghoctap.com 1006
http://www.hotskill.vn 20

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Determine the existing size of your shared memory segment: sysctl -a | grep shmmax Set sysctl -w kernel.shmmax=50331648
  • Determine the existing size of your shared memory segment: sysctl -a | grep shmmax Set sysctl -w kernel.shmmax=50331648
  • More installation LAMP: http://jonathanhui.com/building-ec2-amazon-linux-lamp
  • Mailchimp: http://mailchimp.com/pricing/

Heavy Web Optimization: Backend Heavy Web Optimization: Backend Presentation Transcript

  • Heavy Web Optimization BACK-END <?php //from a PHP dev ?>Vo Duy Tuan PHP Developer from Reader.vn, Picto.vn & more…
  • $who_am_I? My Name is Võ Duy Tuấn PHP 5 Zend Certified Engineer Interests: PHP, Social Network, Optimize Web Works:  Thegioididong  Reader.vn, Picto.vn CEO/Founder  Trainer  Freelancer  Consultant
  • $table_of_content Warm up: Some best practices Back-end Optimization De-normalization Asynchronous processing Caching Scalability
  • 1 Warm up: Some best practices
  • 1.1. Smarty Tricka. Prevent recompile .tpl file:$smarty = new Smarty();$smarty->compile_check = false;b. Compile all .tpl files:set_time_limit(1000); //do not interrupt$smarty->compileAllTemplates(.tpl,true);
  • 1.2. Pagination From To
  • 1.2. Pagination – Why? How do we make pagination feature?mysql_query(‘SELECT COUNT(*) FROM tbl WHERE col LIKE “%word%”’)> Get total record > Get toal page > Build page number list with a simple loopmysql_query(‘SELECT * FROM tbl WHERE col LIKE “%word%” LIMIT 0,20’)> Get data of current page (page 1, with 20 rows/page)Do you have the answer  ?
  • 1.3. Get enough data from remote server Send HEAD to detect 404 error from remote URL Read first bytes of remote file to detect image type,width/height
  • 2 Back-end Optimization
  • 2.1. Where is Back-end?“80% of the end-user response time is spent on the front-end. Most of this time is tied up in downloading all thecomponents in the page: images, stylesheets, scripts, Flash,etc. Reducing the number of components in turn reduces thenumber of HTTP requests required to render the page. Thisis the key to faster pages.”
  • 2.2. Back-end Optimize Theory Reduce disk In/Out Reduce complex/fuzzy Reduce budget
  • 2.3. Debugging & Profiling Nusphere Phped Debugger Xdebug top command Apache bench
  • 2.3.1. Nusphere Phped Debugger Installation:  Step 1: Install php extension  Step 2: Install DBGbar addon for Firefox or DBG debugger on Chrome  Step 3: Update PHP.INI config  Restart your web server (if needed)
  • 2.3.1. Nusphere Phped Debugger
  • 2.3.2. Xdebug Installation:  Step 1: Install php extension  Step 2: Update PHP.INI config  Restart your server (if needed)
  • 2.3.2. Xdebug PHP.INI [xdebug] zend_extension_ts = C:..php_xdebug-2.1.0-5.2-vc6.dll xdebug.profiler_output_dir = "C:xdebug" xdebug.profiler_output_name = "callgrind.%R.%t" xdebug.profiler_enable = 0 xdebug.profiler_append=0 xdebug.profiler_enable_trigger = 1 xdebug.extended_info=1 Usage: http://example.com/index.php?XDEBUG_PROFILE
  • 2.3.2. Xdebug
  • 2.3.3. linux command top
  • 2.3.4. Apache Bench
  • Somewhere in the dark…
  • 3 De-normalization
  • 3.1. What is De-normalization? Most of use live with Relational DB. What is normalization?  Database normalization is the process of organizing the fields and tables of a relational database to minimize redundancy and dependency .(Wiki) What is De-normalization?  Denormalization is the process of attempting to optimise the read performance of a database by adding redundant data or by grouping data. (Wiki)
  • 3.2. How to de-normalize? Vertical Split. Pre-calculated value. Duplicate data.
  • 3.2.1. Vertical Split
  • 3.2.1. Vertical Split (cont.)
  • 3.2.2. Pre-calculated value
  • 3.2.3. Duplicate data
  • 3.3. Data correctness Normalization = Correctness Denormalization = Performance
  • 4 Asynchronous processing
  • 4.1. Job queue
  • 4.2. Job queue :: Gearman  http://gearman.org/
  • But….Apache can be a job queue,
  • 4.3. Async Requestfunction backgroundHttpPost($url, $prm = ){ $p=parse_url($url); $fp = fsockopen($p[host], isset($p[port])?$p[port]:80, $en, $es, 30); if (!$fp) return false; else { $out = "POST ".$p[path]."?".$p[query]." HTTP/1.1rn"; $out.= "Host: ".$p[host]."rn"; $out.= "Content-Type: application/x-www-form-urlencodedrn"; $out.= "Content-Length: ".strlen($prm)."rn"; $out.= "Connection: Closernrn"; if ($prm != ) $out.= $prm; fwrite($fp, $out); fclose($fp); return true; }}Usage:$taskUrl = http://picto.vn/task/deletephoto;backgroundHttpPost($taskUrl, photoid= . $myPhoto->id);
  • 5 Caching
  • 5.1. What is caching?
  • 5.2. What is APC? Alternative PHP Cache – APC Free PHP Extension PHP Opcode cache Support User data cache Run on SAME machine with PHP NOT support multi servers
  • 5.3. APC Monitor
  • 5.4. APC Using
  • 5.5. APC Tip Opcode your web code only Disable APC for PhpMyAdmin<Directory "/mysite/public_html/"> ... php_admin_flag apc.cache_by_default On</Directory<Directory "/mysite/public_html/phpmyadmin/"> ... php_admin_flag apc.cache_by_default Off</Directory>
  • 2.6. APC Tip.. Cache STRING is better than ARRAY Long Time To Live better than Short Case study:  Caching for Feed System:
  • BEFORE
  • BEFORE
  • ANALYSE
  • AFTER
  • Short TTL make fragmentation
  • Short TTL make fragmentation
  • 6 Cloud computing - AWS  Amazon Elastic Compute Cloud – Amazon EC2 + EBS  Amazon Simple Storage Service – Amazon S3  Amazon Simple Email Service – Amazon SES
  • 6.1. Amazon EC25
  • 6.1. Amazon EC2 (cont.)5
  • 6.2. Amazon S35
  • 6.2. Amazon S3 (cont.)5
  • 6.2. Amazon S3 (cont.)5
  • 6.3. Amazon SES 1,000,000 emails = $1005 Support SMTP
  • 6.3. Amazon SES (cont.)5
  • 6.4. Adapt to AWS for scalability Local server (Web & RDBMS) + S35 EC2 (Web) + EBS (RDB) + S3 EC2 (Web) + EBS (local storage) + Amazon RDS (RDB) + S3 EC2 (Web) + EBS (local storage) + EC2 (noSQL) + S3 …Can use with more Amazon Services
  • Thank you!It’s time to query …CONTACTFullname: Vo Duy TuanEmail: tuanmaster2002@yahoo.comPhone: 0938 916 902Website: http://bloghoctap.com