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







Recent comments