debian: Web Server PHP Benchmark

Topic: 
 
ได้ยินว่า nginx เป็น web server ที่จ่าย static content ได้เร็วจัดและกินหน่วยความจำน้อย แต่ด้อยเรื่อง dynamic content
จึงสงสัยต่อว่า แล้วถ้าเทียบกับ apache2-mpm-worker ล่ะ ความเร็วจะเป็นอย่างไร
เลยลองทำ benchmark ของ dynamic content แบบง่าย ๆ เทียบระหว่าง 3 ตัว (ได้เอา cache ของ php คือ php-apc มาร่วมทดสอบด้วย) โดยเลียนแบบสถานการณ์จริง คืออ่าน node ของ drupal จำนวน 100 nodes

กำหนด
  • hardware: E2140 RAM 4G
  • debian: lenny
  • kernel: 2.6.26-2-xen-amd64
  • apache2: 2.2.9-10+lenny4
  • nginx: 0.6.32-3
  • mysql-server: 5.0.51a-24+lenny1

คำสั่งติดตั้งโดยย่อคือ
  1. apache2-mpm-prefork:
    aptitude install phpmyadmin mysql-server-5.0
  2. apache2-mpm-worker:
    aptitude install phpmyadmin apache2-mpm-worker libapache2-mod-fcgid php-cgi mysql-server-5.0
  3. nginx:
    aptitude install phpmyadmin nginx php-cgi lighttpd
การปรับแต่งดูจากอ้างอิงท้ายเรื่อง

การทดสอบคือ
BENCHMARK 1: อ่าน node ของ drupal แบบต่อเนื่อง จำนวน 100 nodes
#!/bin/bash
SERVER='192.168.1.1'
time $(for i in `seq 101 200`; do wget -q -O- http://$SERVER/?q=node/$i; done)

และ
BENCHMARK 2: อ่าน node ของ drupal จำนวน 100 nodes แบบพร้อมกัน
#!/bin/bash
SERVER='192.168.1.1'
time $(
    for i in `seq 101 200`; do 
        wget -q -O- http://$SERVER/?q=node/$i & 
    done
wait)


ได้ผลดังนี้
BENCH1 – sequential get 100 nodes (secs) 1 2 3 4 5 avg real
First run – apache2-mpm-prefork / mod_php5 35.74 33.8 31.9 34.79 34.81 34.21
Second run – apache2-mpm-prefork / mod_php5 29.46 29.49 29.52 29.52 29.51 29.5 31.85
First run – apache2-mpm-prefork / mod_php5 / php-apc 18.37 15.78 19.24 19.49 19.77 18.53
Second run – apache2-mpm-prefork / mod_php5 / php-apc 13.04 13.13 13.06 13.61 13.12 13.19 15.86
First run – apache2-mpm-worker / mod_fcgi 35.48 35.88 35.29 34.54 34.8 35.2
Second run – apache2-mpm-worker / mod_fcgi 29.08 29.13 29.05 29.06 29.15 29.09 32.14
First run – apache2-mpm-worker / mod_fcgi / php-apc 15.06 18.22 18.86 18.85 14.23 17.04
Second run – apache2-mpm-worker / mod_fcgi / php-apc 12.8 12.97 12.9 12.89 12.8 12.87 14.96
First run – nginx / spawn_fcgi 33.96 33.71 34.7 33.53 33.93 33.97
Second run – nginx / spawn_fcgi 28.94 28.78 28.85 28.81 28.93 28.86 31.41
First run – nginx / spawn_fcgi / php-apc 19.08 17.96 19.07 18.34 18.82 18.65
Second run – nginx / spawn_fcgi / php-apc 13.08 13.03 13 13.1 13.08 13.06 15.86
















BENCH2 – concurrent get 100 nodes (secs) 1 2 3 4 5 avg real
First run – apache2-mpm-prefork / mod_php5 21.98 21.34 21.6 21.49 21.48 21.58
Second run – apache2-mpm-prefork / mod_php5 19.28 15.14 12.53 19.14 18.9 17 19.29
First run – apache2-mpm-prefork / mod_php5 / php-apc 11.61 11.99 11.77 11.75 11.93 11.81
Second run – apache2-mpm-prefork / mod_php5 / php-apc 9.71 9.73 9.52 9.06 9.9 9.58 10.7
First run – apache2-mpm-worker / mod_fcgi 20.89 20.93 21.33 21.23 21.43 21.16
Second run – apache2-mpm-worker / mod_fcgi 19.47 19.36 19.39 19.33 19.35 19.38 20.27
First run – apache2-mpm-worker / mod_fcgi / php-apc 14.33 14.02 14.21 14.32 14.35 14.25
Second run – apache2-mpm-worker / mod_fcgi / php-apc 11.5 11.37 11.57 11.77 11.12 11.47 12.86
First run – nginx / spawn_fcgi 18.04 20.16 21.28 21.22 21.36 20.41
Second run – nginx / spawn_fcgi 17.38 17.47 20.88 20.36 18.37 18.89 19.65
First run – nginx / spawn_fcgi / php-apc 11.26 11.15 11.18 11.25 11.18 11.2
Second run – nginx / spawn_fcgi / php-apc 10.56 10.59 10.56 10.57 10.58 10.57 10.89



สรุปว่า ได้ผลใกล้เคียงกันมาก

หมายเหตุ ได้ทดสอบ php5-xcache ไว้ด้วย แต่ผลเหมือนกับ php-apc จึงไม่ได้แสดงผลไว้

อ้างอิง
 

Syndicate

Subscribe to Syndicate

Who's online

There are currently 0 users online.