Performance Evaluation when static web pages and dynamic web pages are put in the same web server and in different web servers
[Topology]
H1 (10.0.1.1)
--------(10.0.1.254) (Nginx Load Balancer) (10.0.0.254) ----------(10.0.0.1)
Web1
(10.0.2.254)----------(10.0.2.1) Web2
Scenario 1: a.jpg
and index.php (with a SQL query) are put in the web1
Scenario 2: a.jpg
is in put in the web1 and index.php are put in the web2
Minint for network
setup (test2.py)
|
from mininet.cli
import CLI from mininet.net import Containernet from mininet.link
import Link,TCLink,Intf from mininet.log import setLogLevel,info if '__main__' == __name__:
setLogLevel('info')
net = Containernet(link=TCLink)
h1 = net.addHost('h1', mac =
'00:00:00:00:01:01', ip="10.0.1.1/24")
h2 = net.addHost('h2')
h3 = net.addDocker('h3', mac =
'00:00:00:00:03:03', ip= '10.0.0.1/24', dimage="apache-php-mysql:v2")
h4 = net.addDocker('h4', mac =
'00:00:00:00:04:04', ip= '10.0.2.1/24', dimage="apache-php-mysql:v2")
linkopt=dict(bw=1,delay='1ms',loss=0)
linkopt1=dict(bw=10,delay='1ms',loss=0)
TCLink(h1, h2, **linkopt1)
TCLink(h2, h3, **linkopt)
TCLink(h2, h4, **linkopt)
net.build()
h2.cmd("ifconfig h2-eth0 0")
h2.cmd("ifconfig h2-eth1 0")
h2.cmd("ifconfig h2-eth2 0")
h2.cmd("ip addr
add 10.0.1.254/24 brd + dev h2-eth0")
h2.cmd("ip addr
add 10.0.0.254/24 brd + dev h2-eth1")
h2.cmd("ip addr
add 10.0.2.254/24 brd + dev h2-eth2")
h2.cmd("echo 1 > /proc/sys/net/ipv4/ip_forward")
h1.cmd("ip route add default via
10.0.1.254")
h3.cmd("ip route del default")
h3.cmd("ip route add default via
10.0.0.254")
h3.cmd("/etc/init.d/apache2
start &")
h3.cmd("/etc/init.d/mysql start &")
h4.cmd("ip route del default")
h4.cmd("ip route add default via
10.0.2.254")
h4.cmd("/etc/init.d/apache2
start &")
h4.cmd("/etc/init.d/mysql start &")
CLI(net) net.stop() |
nginx.conf (for scenario 1)
|
user www-data; worker_processes auto; pid /run/nginx.pid; events { worker_connections 768; #
multi_accept on; } http { ## #
Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; #
server_tokens off; #
server_names_hash_bucket_size 64; #
server_name_in_redirect off; include
/etc/nginx/mime.types; default_type application/octet-stream; server
{ listen 8080; location
~ .*\.(php|jpg)$ { add_header Cache-Control no-store; expires
-1; proxy_pass http://10.0.0.1:80; } #location
~ .*\.(php)$ { # add_header Cache-Control no-store; # expires -1; # proxy_pass http://10.0.0.1:80; #} #location
~ .*\.(jpg)$ { # add_header Cache-Control no-store; # expires -1; # proxy_pass http://10.0.2.1:80; #} } ## #
SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3,
ref: POODLE ssl_prefer_server_ciphers on; ## #
Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## #
Gzip Settings ## gzip on; gzip_disable "msie6"; #
gzip_vary on; #
gzip_proxied any; #
gzip_comp_level 6; #
gzip_buffers 16 8k; #
gzip_http_version 1.1; #
gzip_types text/plain text/css
application/json application/javascript text/xml
application/xml application/xml+rss text/javascript; ## #
Virtual Host Configs ## include
/etc/nginx/conf.d/*.conf; include
/etc/nginx/sites-enabled/*; } #mail { # #
See sample authentication script at: # #
http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript # # #
auth_http localhost/auth.php; # #
pop3_capabilities "TOP" "USER"; # #
imap_capabilities "IMAP4rev1"
"UIDPLUS"; # # server
{ # listen localhost:110; # protocol pop3; # proxy on; # } # # server
{ # listen localhost:143; # protocol imap; # proxy on; # } #} |
nginx.conf (for scenario 2)
|
user www-data; worker_processes auto; pid /run/nginx.pid; events { worker_connections 768; #
multi_accept on; } http { ## #
Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; #
server_tokens off; #
server_names_hash_bucket_size 64; #
server_name_in_redirect off; include
/etc/nginx/mime.types; default_type application/octet-stream; server
{ listen 8080; #location
~ .*\.(php|jpg)$ { # add_header Cache-Control no-store; # expires -1; # proxy_pass http://10.0.0.1:80; #} location ~ .*\.(php)$ { add_header Cache-Control no-store; expires
-1; proxy_pass http://10.0.0.1:80; } location
~ .*\.(jpg)$ { add_header Cache-Control no-store; expires
-1; proxy_pass http://10.0.2.1:80; } } ## #
SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3,
ref: POODLE ssl_prefer_server_ciphers on; ## #
Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## #
Gzip Settings ## gzip on; gzip_disable "msie6"; #
gzip_vary on; #
gzip_proxied any; #
gzip_comp_level 6; #
gzip_buffers 16 8k; #
gzip_http_version 1.1; #
gzip_types text/plain text/css
application/json application/javascript text/xml
application/xml application/xml+rss text/javascript; ## #
Virtual Host Configs ## include
/etc/nginx/conf.d/*.conf; include
/etc/nginx/sites-enabled/*; } #mail { # #
See sample authentication script at: # #
http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript # # #
auth_http localhost/auth.php; # #
pop3_capabilities "TOP" "USER"; # #
imap_capabilities "IMAP4rev1"
"UIDPLUS"; # # server
{ # listen localhost:110; # protocol pop3; # proxy on; # } # # server
{ # listen localhost:143; # protocol imap; # proxy on; # } #} |
(file: frequest2)
|
http://10.0.1.254:8080/a.jpg http://10.0.1.254:8080/index.php |
(file:run_test2.sh)
|
siege -c 5 -r 10 -f ./frequest2 -b |
Execution
1.run the mininet script
2. open a terminal for h2 and run the nginx load balancer

3. open a terminal for h1 and run the performance evaluation

4. change the nginx.conf and run the evaluation again.

From the above results, we can see that when a static webpage and a dynamic webpage put in different web servers can get better performance (110sec vs. 120vs) in our case.
Dr. Chih-Heng Ke (smallko@gmail.com)
Department of Computer Science and Information
Engineering,
National Quemoy University, Kinmen, Taiwan.