debian: Web Server PHP Benchmark 2
ต้องการเปลี่ยนเครื่องเซิร์ฟเวอร์ที่ใช้รัน Drupal จึงทดลองทดสอบเปรียบเทียบ Web Server และโปรแกรมที่ใช้รัน php รุ่นต่าง ๆ ไว้ดังนี้
- apache2-mpm-prefork libapache2-mod-php5
- apache2-mpm-worker libapache2-mod-fcgid php5-cgi
- lighttpd php5-cgi
- nginx php5-cgi spawn-fcgi
สมบัติ
- เครื่อง: cpu E5200 ram 2G
- os: Debian Squeeze 2.6.32-5-xen-amd64
- mysql-server: 5.1.49-3
- apache2: 2.2.16-4
- lighttpd: 1.4.28-1
- nginx: 0.7.67-3
- php-apc: 3.1.3p1-2
- สมมุติว่าลง Drupal ไว้ที่ /var/www/example.com/drupal
วิธี
ทำสคริปต์เรียก node ของ Drupal จากเซิร์ฟเวอร์ จำนวน 200 node โดยแบ่งเป็นแบบลำดับและแบบขนาน
- แบบลำดับ
#!/bin/bash SERVER='www.example.com' time $(for i in `seq 101 300`;do wget -q -O- http://$SERVER/?q=node/$i; done)
- แบบขนาน
#!/bin/bash SERVER='www.example.com' time $( for i in `seq 101 300`; do wget -q -O- http://$SERVER/?q=node/$i & done wait)
รัน 5 ครั้งแล้วดูค่าเฉลี่ย และได้เปรียบเทียบระหว่างไม่มีแคช กับมีแคชด้วย โดยใช้แพ็กเกจ php-apc
ผลการทดลอง
ได้ผลดังนี้
BENCH1 - sequential get 200 nodes (secs) | 1 | 2 | 3 | 4 | 5 | avg |
---|---|---|---|---|---|---|
apache2-mpm-prefork mod_php5 | 7.277 | 6.701 | 6.523 | 6.549 | 6.528 | 6.7156 |
apache2-mpm-prefork mod_php5 php-apc | 4.779 | 4.524 | 4.514 | 4.339 | 4.104 | 4.452 |
apache2-mpm-worker mod_fcgi | 7.376 | 6.618 | 6.595 | 6.596 | 6.58 | 6.753 |
apache2-mpm-worker mod_fcgi php-apc | 4.718 | 4.507 | 4.547 | 4.094 | 4.1 | 4.3932 |
lighttpd php5-cgi | 7.178 | 7.111 | 6.484 | 6.439 | 6.481 | 6.7386 |
lighttpd php5-cgi php-apc | 4.575 | 4.423 | 4.046 | 4.097 | 4.093 | 4.2468 |
nginx php5-cgi | 7.139 | 6.394 | 6.411 | 6.395 | 6.4 | 6.5478 |
nginx php5-cgi php-apc | 4.667 | 4.066 | 4.049 | 4.06 | 4.05 | 4.1784 |
BENCH2 - concurrent get 200 nodes (secs) | 1 | 2 | 3 | 4 | 5 | avg |
---|---|---|---|---|---|---|
apache2-mpm-prefork mod_php5 | 5.465 | 5.491 | 5.912 | 5.357 | 5.354 | 5.5158 |
apache2-mpm-prefork mod_php5 php-apc | 5.142 | 5.204 | 5.195 | 5.067 | 5.078 | 5.1372 |
apache2-mpm-worker mod_fcgi | 7.031 | 4.272 | 4.259 | 4.247 | 4.271 | 4.816 |
apache2-mpm-worker mod_fcgi php-apc | 5.686 | 2.982 | 2.956 | 2.911 | 2.918 | 3.4906 |
lighttpd php5-cgi | 4.771 | 4.759 | 4.657 | 4.18 | 4.15 | 4.5034 |
lighttpd php5-cgi php-apc | 3.211 | 3.102 | 3.116 | 3.09 | 2.906 | 3.085 |
nginx php5-cgi | 4.207 | 3.871 | 4.117 | 4.131 | 3.97 | 4.0592 |
nginx php5-cgi php-apc | 2.801 | 2.824 | 2.975 | 2.857 | 2.399 | 2.7712 |
การติดตั้ง
ลงวิธีติดตั้งแบบหยาบ ๆ ไว้เพื่ออ้างอิง
(แพ็กเกจ phpmyadmin ลงไว้เพื่อให้เดเบียนหา dependencies ให้)
1. apache2-mpm-prefork libapache2-mod-php5
ติดตั้ง
# aptitude install phpmyadmin
ปรับ apache2
# vi /etc/apache2/site-enabled/000-default
<VirtualHost *:80> ... #DocumentRoot /var/www DocumentRoot /var/www/example.com/drupal ... #<Directory /var/www/> <Directory /var/www/example.com/drupal/> Options Indexes FollowSymLinks MultiViews DirectoryIndex index.html index.php #AllowOverride None AllowOverride All Order allow,deny allow from all </Directory> ... </VirtualHost>
เริ่มใหม่
# /etc/init.d/mysql restart; /etc/init.d/apapche2 restart
(ถอดถอนด้วยคำสั่ง aptitude purge phpmyadmin apache2-mpm-prefork libapache2-mod-php5 apache2.2-common)
2. apache2-mpm-worker libapache2-mod-fcgid php5-cgi
ติดตั้ง
# aptitude install phpmyadmin apache2-mpm-worker libapache2-mod-fcgid php5-cgi
ปรับ apache2
# vi /etc/apache2/site-enabled/000-default
<VirtualHost *:80> ... #DocumentRoot /var/www DocumentRoot /var/www/example.com/drupal ... #<Directory /var/www/> <Directory /var/www/example.com/drupal/> Options Indexes FollowSymLinks MultiViews DirectoryIndex index.html index.php AddHandler fcgid-script .php FCGIWrapper /usr/lib/cgi-bin/php5 .php Options +ExecCGI #AllowOverride None AllowOverride All Order allow,deny allow from all </Directory> ... </VirtualHost>
เริ่มใหม่
# /etc/init.d/mysql restart; /etc/init.d/apapche2 restart
(ถอดถอนด้วยคำสั่ง aptitude purge phpmyadmin apache2-mpm-worker libapache2-mod-fcgid php5-cgi)
3. lighttpd php5-cgi
ติดตั้ง
# aptitude install phpmyadmin lighttpd php5-cgi
ปรับ lighttpd
# vi /etc/lighttpd/lighttpd.conf
... #server.document-root = "/var/www" server.document-root = "/var/www/example.com/drupal" ... fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php5-cgi", "socket" => "/tmp/php.socket" ))) ...
เริ่มใหม่
# /etc/init.d/mysql restart; /etc/init.d/lighttpd restart
(ถอดถอนด้วยคำสั่ง aptitude purge phpmyadmin lighttpd php5-cgi)
4. nginx php5-cgi spawn-fcgi
ติดตั้ง
# aptitude install phpmyadmin nginx php5-cgi spawn-fcgi
ปรับ spawn-fcgi
# cp /usr/share/doc/spawn-fcgi/run-php /usr/local/bin/spawn-fcgi-run-php # vi /usr/local/bin/spawn-fcgi-run-php
... #exec /usr/bin/spawn-fcgi -n -s /var/run/lighttpd/php-xxx.sock -n -u xxx -U www-data -- /usr/bin/php5-cgi exec /usr/bin/spawn-fcgi -n -s /var/run/php-www-data.sock -n -u www-data -U www-data -- /usr/bin/php5-cgi ...
# sh /usr/local/bin/spawn-fcgi-run-php &
(ถ้าทำ server จริง ให้เอาคำสั่งนี้ไปใส่ใน /etc/rc.local ตรงก่อน exit 0 แล้วเปิดเครื่องใหม่)
ปรับ nginx
# vi /etc/nginx/sites-enabled/default
... server { ... #server_name localhost; server_name _; ... location / { #root /var/www; root /var/www/example.com/drupal; #index index.html index.htm; index index.html index.htm index.php; } ... #location ~ \.php$ { #fastcgi_pass 127.0.0.1:9000; #fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; #includefastcgi_params; #} location ~ \.php$ { #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/var/run/php-www-data.sock; fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME /var/www/example.com/drupal/$fastcgi_script_name; #includefastcgi_params; include fastcgi_params; } ..
เริ่มใหม่
# killall php5-cgi; sh /usr/local/bin/spawn-fcgi-run-php &; /etc/init.d/mysql restart; /etc/init.d/nginx restart
(ถอดถอนด้วยคำสั่ง aptitude purge phpmyadmin nginx php5-cgi spawn-fcgi)
อ้างอิง
- debian: Web Server PHP Benchmark
- howtoforge: Installing Nginx With PHP5 And MySQL Support On Ubuntu 9.04
- nginx: No input file specified.
- vitki.net: Installing Apache2 and PHP5 using mod_fcgid
- howtoforge: How To Set Up Apache2 With mod_fcgid And PHP5 On Ubuntu 10.04
- howtoforge: Installing Lighttpd With PHP5 And MySQL Support On Debian Etch
- till.klampaeckel.de: Ubuntu: nginx+php-cgi on a socket
- Printer-friendly version
- Log in or register to post comments
- 4878 reads
Recent comments