debian: Web Server PHP Benchmark
Submitted by wd on Mon, 2009-08-10 11:15
ได้ยินว่า nginx เป็น web server ที่จ่าย static content ได้เร็วจัดและกินหน่วยความจำน้อย แต่ด้อยเรื่อง dynamic content
จึงสงสัยต่อว่า แล้วถ้าเทียบกับ apache2-mpm-worker ล่ะ ความเร็วจะเป็นอย่างไร
เลยลองทำ benchmark ของ dynamic content แบบง่าย ๆ เทียบระหว่าง 3 ตัว (ได้เอา cache ของ php คือ php-apc มาร่วมทดสอบด้วย) โดยเลียนแบบสถานการณ์จริง คืออ่าน node ของ drupal จำนวน 100 nodes
กำหนด
คำสั่งติดตั้งโดยย่อคือ
การทดสอบคือ
BENCHMARK 1: อ่าน node ของ drupal แบบต่อเนื่อง จำนวน 100 nodes
และ
BENCHMARK 2: อ่าน node ของ drupal จำนวน 100 nodes แบบพร้อมกัน
ได้ผลดังนี้
สรุปว่า ได้ผลใกล้เคียงกันมาก
หมายเหตุ ได้ทดสอบ php5-xcache ไว้ด้วย แต่ผลเหมือนกับ php-apc จึงไม่ได้แสดงผลไว้
อ้างอิง
จึงสงสัยต่อว่า แล้วถ้าเทียบกับ 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
คำสั่งติดตั้งโดยย่อคือ
- apache2-mpm-prefork:
aptitude install phpmyadmin mysql-server-5.0
- apache2-mpm-worker:
aptitude install phpmyadmin apache2-mpm-worker libapache2-mod-fcgid php-cgi mysql-server-5.0
- 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 จึงไม่ได้แสดงผลไว้
อ้างอิง
- Printer-friendly version
- Log in or register to post comments
- 8618 reads
Recent comments