Most industries today are very competitive and the biggest impact of that condition are in the economy sector. But in fact, the perfect condition of competition in industry doesn’t exist. That happens because still there are some providers in the industries who have a power to influence the price. So, the condition in the consumer market with the best price while on the other side the business environtment doesn’t bother and get their best of the best profits, that is perfect competition. Then we can conclude that the stock price in the market depends on two related thing which is how buyers and sellers appreciate the company. But in a highly competitive market like this, interference can possibly happens to create such unwanted condition. For instance if the government invests their money by buying lots of shares in the market, then basically the government have a power to control the price as they are the biggest shareholder in the company.
If we want to fail the statement about someone can interfere the price then web hosting industry today is the answer. There are no such a famous provider or famous buyer can affect the price of this industry, which makes webhosting service is a perfect competitive market in implementation. There are so many hosting companies and they keep growing because everyday people build a new hosting company. They are keep voicing that the best web are us. Various plans and lots of coupons are mandatory for the newly created hosting company. How could that thing happens? The explanation is simple, by purchasing one reseller account then you can instantly create a new hosting company. The effect for consumer is they getting confused how to choose the best between the requirement and price. In this case, web hosting reviews play very important role. The comparison between one to another hosting company provided by web hosting reviews where you can find a lot by typing web hosting reviews query in google is considerably help. But in order to find a best web hosting company from web hosting reviews, you also need to read the reviews from the trusted source, not just a bunch of text judging that a hosting company is bad because my site cannot be accessed in 24 hour but without any tests or proof.
Web hosting industry is a come and go business. I can told you that because you can easily enter the market with one reseller account, one domain name, and one copy paste web design for a few bucks and then leave the business as easy as you turn a palm of your hand. No one can ever interfere with that, even government. So that makes web hosting industry is like a jungle of business area, the best hosting company with good management, promotions, and ideas will survive.
Then how can you find a responsible and established web hosting company from reviews? The answer is very easy, as i said before you can see the content provider by web hosting reviews site, is it only a set of unclear texts or is it with some proof? Moreover, do not just trust a hosting review site like you trust your mom. If you have decided your choice, then test it for one to three months to make sure that your choice is not a come and go hosting company. Not just a performance, support is also very important, so they are like two sides of coins, cannot be separated.
Website: http://basshost.com
Download and Upload From International
Location
Location: US – Port Speed: 1Gbit – Method: WGET & cURL
Location: DE – Port Speed: 1Gbit – Method: WGET & cURL
Benchmark Test (I/O test disabled)
1 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10
1 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10
1 x System Call Overhead 1 2 3 4 5 6 7 8 9 10
1 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10
1 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
1 x Process Creation 1 2 3
1 x Execl Throughput 1 2 3
1 x Shell Scripts (1 concurrent) 1 2 3
1 x Shell Scripts (8 concurrent) 1 2 3
1 x Shell Scripts (16 concurrent) 1 2 3
2 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10
2 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10
2 x System Call Overhead 1 2 3 4 5 6 7 8 9 10
2 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10
2 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
2 x Process Creation 1 2 3
2 x Execl Throughput 1 2 3
2 x Shell Scripts (1 concurrent) 1 2 3
2 x Shell Scripts (8 concurrent) 1 2 3
2 x Shell Scripts (16 concurrent) 1 2 3
========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)
System: server.xxx.xxx: GNU/Linux
OS: GNU/Linux -- 2.6.18-274.xxx -- #1 SMP Mon Oct 24 20:49:2
4 MSD 2011
Machine: i686 (i386)
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPU 0: Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz (5665.5 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT,
SYSCALL/SYSRET, Intel virtualization
CPU 1: Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz (5664.5 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT,
SYSCALL/SYSRET, Intel virtualization
05:36:41 up 49 min, 1 user, load average: 0.42, 0.23, 0.09; runlevel 3
------------------------------------------------------------------------
Benchmark Run: Fri Feb 03 2012 05:36:41 - 06:02:28
2 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 11861780.8 lps (10.0 s, 7 samples)
Double-Precision Whetstone 2604.8 MWIPS (10.0 s, 7 samples)
Execl Throughput 4111.3 lps (29.8 s, 2 samples)
Pipe Throughput 823349.9 lps (10.0 s, 7 samples)
Pipe-based Context Switching 263677.5 lps (10.0 s, 7 samples)
Process Creation 12901.8 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 3335.7 lpm (60.3 s, 2 samples)
Shell Scripts (16 concurrent) 276.8 lpm (60.2 s, 2 samples)
Shell Scripts (8 concurrent) 525.9 lpm (60.3 s, 2 samples)
System Call Overhead 726400.8 lps (10.0 s, 7 samples)
System Benchmarks Partial Index BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 11861780.8 1016.4
Double-Precision Whetstone 55.0 2604.8 473.6
Execl Throughput 43.0 4111.3 956.1
Pipe Throughput 12440.0 823349.9 661.9
Pipe-based Context Switching 4000.0 263677.5 659.2
Process Creation 126.0 12901.8 1024.0
Shell Scripts (1 concurrent) 42.4 3335.7 786.7
Shell Scripts (16 concurrent) --- 276.8 ---
Shell Scripts (8 concurrent) 6.0 525.9 876.5
System Call Overhead 15000.0 726400.8 484.3
========
System Benchmarks Index Score (Partial Only) 742.6
------------------------------------------------------------------------
Benchmark Run: Fri Feb 03 2012 06:02:28 - 06:29:20
2 CPUs in system; running 2 parallel copies of tests
Dhrystone 2 using register variables 11921027.5 lps (10.0 s, 7 samples)
Double-Precision Whetstone 5183.8 MWIPS (10.1 s, 7 samples)
Execl Throughput 4289.9 lps (29.9 s, 2 samples)
Pipe Throughput 823052.4 lps (10.0 s, 7 samples)
Pipe-based Context Switching 281592.4 lps (10.0 s, 7 samples)
Process Creation 13055.4 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 4285.4 lpm (60.0 s, 2 samples)
Shell Scripts (16 concurrent) 299.4 lpm (60.1 s, 2 samples)
Shell Scripts (8 concurrent) 573.8 lpm (60.3 s, 2 samples)
System Call Overhead 727678.4 lps (10.0 s, 7 samples)
System Benchmarks Partial Index BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 11921027.5 1021.5
Double-Precision Whetstone 55.0 5183.8 942.5
Execl Throughput 43.0 4289.9 997.6
Pipe Throughput 12440.0 823052.4 661.6
Pipe-based Context Switching 4000.0 281592.4 704.0
Process Creation 126.0 13055.4 1036.1
Shell Scripts (1 concurrent) 42.4 4285.4 1010.7
Shell Scripts (16 concurrent) --- 299.4 ---
Shell Scripts (8 concurrent) 6.0 573.8 956.4
System Call Overhead 15000.0 727678.4 485.1
========
System Benchmarks Index Score (Partial Only) 844.0
Summary
Let’s review this unmanaged vps hosting provide, Bass Host, if
you take a look at the logo on their page, it is a bass (large
mouth) fish showed within their logo. I don’t know maybe the
founder of basshost’s hobby is fishing bass fish or something
like that, but certainly it has nothing to do with the web
hosting thing, lol. Allright, look at the whois picture of Bass
Host, they are using server(s) from FDC Servers, i heard so much
bad review about it but that’s just another people’s review,
don’t trust. Okay next, for five bucks you got 384MB memory, 25GB
storage, and 250GB data transfer @ i don’t have any idea how much
port speed they are using, because sometimes they are fast and
some other time they are slow, but i got a good speed when i
tested from two of my servers located in United States and
Deutschland. For the disk I/O test we cannot rely on this
unmanaged (or we could probably say budget) vps, 50MB/s on
average and around 800 for benchmark score (two Intel(R)
Core(TM)2 Quad CPU Q9550 @ 2.83GHz). I guess that is for my
personal review, five bucks is still worthed for this VPS, 8
points from 10 points for this provider.
Okay we continue to the third part of this post title, on the
previous part we use NginX as load balancer and failover, now we
use NginX with Geo IP based to determine the best backend for the
visitors to put, here is the illustration.

For instance, we have two backend servers located in UK and DE,
then we put the visitors from United Kingdom to the UK backend,
visitors from Germany to DE backend, and the rest will be divided
into those two backend servers, let’s deal with it.
I assume you have installed NginX in your frontend and two backend servers, you can check the previous post for NginX installation. This GeoIP based location needs GeoIP database for the frontend server to determine where to put the visitor, so first we download and extract Lite version of GeoIP database from Maxmind with geo2nginx.pl script from http://markmaunder.com.
wget http://serversreview.net/pkgs/txt/geo2nginx.pl chmod 755 geo2nginx.pl wget http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip unzip GeoIPCountryCSV.zip ./geo2nginx.pl geo.conf mv geo.conf /etc/nginx/
GeoIP database has been added to NginX directory, now to the configuration, here is the example of main configuration
user www www;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
geo $geo {
default default;
include geo.conf;
}
upstream default.backend {
server 178.22.70.2:8080 weight=2;
server 206.253.165.98:8080;
}
upstream UK.backend {
server 178.22.70.2:8080;
}
upstream DE.backend {
server 206.253.165.98:8080;
}
server {
listen 80;
server_name serversreview.net.net;
location / {
proxy_pass http://$geo.backend;
}
}
}
Let’s just move to the http section, as you can see geo.conf is declared with $geo as variable for the upstream, so
e.g. 1.1.1.1 = UK ; 2.2.2.2 = CN
- if visitor comes from 1.1.1.1, then $geo = UK, so the visitor will be sent to UK.backend upstream
- if visitor comes from 2.2.2.2, then $geo = default, so the visitor will be sent to either the first or the second backend
Backend setting is as the same as usual, you can check the previous post for backend setting. Simple and easy right? Next thing you do is trial and error to meet your best configuration.
Take a look once again at the illustration, besides NginX GeoIP based, there is also two different location of databases, here i want to talk about MySQL (the most widely used database) replication. Nowadays, websites are not only using static files, they are using dynamic script with database to save the resource of space, and most of them are using MySQL Community as a free and opensource database. So it is also good to have MySQL live backup for the prevention of -for instance- MySQL failure or another MySQL problem that could happened, more interesting, right? Told you so :p
I will use two CentOS 5 32bit VPS for MySQL master and slave, first we install MySQL in both master and slave server.
yum install libaio libaio-devel wget http://pkgs.serversreview.net/files/mysql-5.5.20-linux2.6-i686.tar.gz tar -zxvf mysql-5.5.20-linux2.6-i686.tar.gz mv mysql-5.5.20-linux2.6-i686 /usr/local/mysql groupadd mysql useradd -r -g mysql mysql cd /usr/local/mysql chown -R mysql . chgrp -R mysql . /usr/local/mysql/scripts/mysql_install_db --user=mysql –-ldata=/usr/local/mysql chown -R root . chown -R mysql data
choose one of MySQL configuration that meet your needs
/usr/local/mysql/support-files/my-huge.cnf
/usr/local/mysql/support-files/my-innodb-heavy-4G.cnf
/usr/local/mysql/support-files/my-large.cnf
/usr/local/mysql/support-files/my-medium.cnf
/usr/local/mysql/support-files/my-small.cnf
I will use my-small.cnf for example
mv /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql chmod +x /etc/init.d/mysql echo "/etc/init.d/mysql start" >> /etc/rc.d/rc.local /etc/init.d/mysql start
Okay, MySQL has been installed on the first and second VPS, now we will configure the first and the second server to be master and slave.
MASTER
Login to your mysql root and use the following command to add and
grant user for slave.
/usr/local/mysql/bin/mysql -uroot -pyourmysqlrootpassword mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'slave_password'; mysql> FLUSH PRIVILEGES; mysql> exit
Where “slave_user” is your preferred user for slave user and “slave_password” is your preferred password for slave user password.
And then edit your master’s my.cnf, make sure “server-id” value in my.cnf is set to “1″
nano /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
And then restart MySQL
/etc/init.d/mysql restart
SLAVE
Edit your slave’s my.cnf “server-id” value to “2″
nano /etc/my.cnf
server-id=2
Restart MySQL
/etc/init.d/mysql restart
MASTER
We will backup target database for replication in master, but
before that we need to close all open tables and lock it with
command
/usr/local/mysql/bin/mysql -uroot -p mysql> FLUSH TABLES WITH READ LOCK; mysql> exit
and then backup the target database
/usr/local/mysql/bin/mysqldump selected_database -uroot -pmysqlrootpassword > database.sql; gzip database.sql
After that, move that backup database to your slave server, you can use curl, scp, or wget from slave server.
SLAVE
Create new MySQL database
/usr/local/mysql/bin/mysql -uroot -p mysql> CREATE DATABASE `my_database`; mysql> FLUSH PRIVILEGES; mysql> exit
extract MySQL database you have downloaded from master server, and then import to your newly created database in
gunzip database.sql.gz /usr/local/mysql/bin/mysql -uroot -pmysqlrootpassword my_database < database.sql
MASTER
Login to your MySQL root and then type command show master status
/usr/local/mysql/bin/mysql -uroot -p
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 107 | bijionta | |
+------------------+----------+--------------+------------------+
Keep that on your screen, and then move to your slave server.
SLAVE
/usr/local/mysql/bin/mysql -uroot -p
mysql> slave stop;
mysql> CHANGE MASTER TO MASTER_HOST='master_ip_address',
MASTER_USER='replication_user_name',
MASTER_PASSWORD='replication_user_password',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=107;
mysql> slave start;
you can see more directives for Change Master To at: http://dev.mysql.com/doc/refman/5.0/en/change-master-to.html After that, back to master server. MASTER Unlock all tables that you close and lock when you backup your target database
/usr/local/mysql/bin/mysql -uroot -p mysql> unlock tables;
That’s it for MySQL replication, anyway if you are using MyISAM engine, then it is recommended for you to add the following settings to your my.cnf
innodb_flush_log_at_trx_commit=1
sync_binlog=1
On the previous post we were talking about simple dns failover
using two nameservers / ip addresses, now we will move the
conversation to the more exciting one, we will use frontend
server to control the backend servers, here is the
illustration.

One frontend server decides whether to put the visitor to the
server A or server B, here i am using NginX as frontend and also
NginX as backend server.
Why don’t you use another web server as the backend?
I like NginX, for me it is easy to understand NginX configuration than another web server. Before we start to configure it, install NginX on the frontend and backend servers. I’m using CentOS 5 by the way.
wget http://pkgs.serversreview.net/files/nginx-1.1.13.tar.gz tar -zxvf nginx-1.1.13.tar.gz cd nginx-1.1.13 useradd www passwd www ./configure --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --user=www --group=www --with-http_ssl_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-file-aio --with-mail_ssl_module --with-ipv6 make make install
in the configurations above, as usual i am using “www” user and group for NginX. Next download NginX init script and make it executable.
wget -O /etc/rc.d/init.d/nginx http://pkgs.serversreview.net/txt/nginx chmod +x /etc/init.d/nginx chkconfig --add nginx chkconfig nginx on
Okay, NginX has been installed on the frontend and backend servers, now we configure the frontend server. Here is the very basic working NginX configuration for the frontend server.
user www www;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
upstream backend {
server backend_ip1:backend_port_other_than_80;
server backend_ip2:backend_port_other_than_80;
}
server {
listen 80;
server_name serversreview.net;
location / {
proxy_pass http://backend;
}
}
}
As you can see from the above, the very first configuration is “www” user and group for NginX, the second configuration is “EventsModule”, that is for how NginX deal with connections, and the configuration you need to take a look is within the “HttpCoreModule”, check the “upstream” tag. NginX HttpUpstreamModule is used for load balancing across backend servers.
upstream backend {
server backend_ip1:backend_port_other_than_80;
server backend_ip2:backend_port_other_than_80;
}
set your backend server ip 1 and 2, also set the port other than 80, for instance 8080. And then you call the backend variable with
location / {
proxy_pass http://backend;
}
another directive for upstream module is “weight”, this can be used if you want to be more specific about weight request of your backend servers, for instance you want the first backend server serves more requests than the second backend server, than you can set
server backend_ip1:backend_port_other_than_80 weight=5; server backend_ip2:backend_port_other_than_80;
those configuration above means 5:1, five from six request will be sent to the first backend server and another one will be sent to the second backend server.
more directives for failover is “max_fails” and “fail_timeout”
server backend_ip1:backend_port_other_than_80 max_fails=3 fail_timeout=30s; server backend_ip2:backend_port_other_than_80;
the request will be sent to the first backend server for 3 tries at 30 seconds timeout before sent to the second backend server.
Okay we have finished the basic settings for the frontend server, now for the backend server, the configuration is as same as the usual NginX virtualhost setting. First we create the folder for domain, public_html, and logs under “www” user.
mkdir /home/www/serversreview.net/public_html /home/www/serversreview.net/logs
And this above is the basic setting for the backend server.
user www www;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 8080;
server_name serversreview.net;
access_log /home/www/serversreview.net/logs/access.log;
error_log /home/www/serversreview.net/logs/error.log;
location / {
root /home/www/serversreview.net/public_html/;
index index.html index.htm index.php;
}
}
}
check the server tag inside HttpCoreModule
After add or edit nginx.conf, do not forget to restart your NginX
/etc/init.d/nginx restart
Okay your configuration for backend and frontend is finished, now test whether if the configuration works or not, write one html file inside “/home/www/serversreview.net/public_html” and try to access it via browser, if your html file appears in your browser then success!
Yeah, yippie, yippie!!!
Wait, there are a few configuration’s that you can use to optimize your virtualhost setting:
allow your_frontend_server_ip_address; deny all;
so if your visitor accessing your site via backend server, then they will meet your 403 error page. That’s good but i think it is still not very good to have that 403 error page appear from accessing the ip address. How about we redirect 403 to your domain? So if someone accessing your backend ip, it will be redirected to your main site, add the following directive inside your “server” tag
error_page 403 http://serversreview.net;
where http://serversreview.net is your frontend / domain.
location / {
proxy_set_header Host $http_host;
proxy_pass http://backend;
}
That will make NginX read your request-header “Host” (domain, not the ip), if you don’t, then each request of your domain will be sent to your first virtualhost in your backend server.
Is that all? Yeah that’s all for the second part, in the third part we will go to the more exciting section, later.
Yeah guys, let’s talk about this post title, really it is interesting, i mean for me this is very interesting :p. If you have a site, and then something happen to your server’s network, and unfortunately your site does not have backup or mirror site which is very essential because your site is your income. So the first thing you need to do is this, do not put your site in shared / reseller hosting. Why? Because in shared hosting, your site is not alone, there are so much neighbor in it, and your site could be exploited from those neighbor, for instance bug in script. Another thing is you cannot get root access from shared hosting, your creativity is limited by non-ssh regular user assigned to your account. So take a look at LowEndBox and get a vps for your shared hosting substitution.
Nuff said for the appetizer, let’s get to the main course. The
simplest failover method for website is round robin dns, the
illustration would be like this:

where the server has been assigned with two or more ip addresses,
so if end user fail to access the server with the first ip
address, it will be routed to the second ip address. To use that
settings, you simply
ns1.domain.com 212.121.212.121
ns2.domain.com 212.121.212.122
after that assign the nameservers to your domain in your domain panel.
A Record domain.com 212.121.212.121 100ms
A Record domain.com 212.121.212.122 100ms
but not all domain panels support two or more of the same hostname, so you can do research for supported domain panel or using DNS.
The illustration below is as same as the failover method above,
but this is more reliable because using an additional / separated
server for live backup.

If the network or assigned ip address in server a is troubled or
have an issue, then it will automatically routed to the second
server’s network. The setting for ip addresses is same as the
above, add the first server’s ip address to your domain A Record
and same thing for the second server’s ip address. The files
within both server is synchronized one each other with a software
like rsync. Here is the way to install and run rsync.
wget http://pkgs.serversreview.net/files/rsync-3.0.9.tar.gz tar -zxvf rsync-3.0.9.tar.gz ./configure make make install
Here’s one example of using rsync, you want to synchronize all of your files inside your public_html directory to the second server, and the public_html directory is located in /home/www/serversreview.net/public_html/, so here is the command
rsync -avz /home/www/serversreview.net/public_html/ user@second_servers_ip_or_host:/home/www/serversreview.net/public_html
now take a look at below command
rsync -avz /home/www/serversreview.net/public_html user@second_servers_ip_or_host:/home/www/serversreview.net
the command is almost the same with the first command, but the second command is syncronizing / copying public_html directory and its content to the path /home/www/serversreview.net of the second server.
I usually use rsync with cron daemon, the command will run either every x minute or every x hour depending on my needs, for more information about commands and manuals you can visit rsync documentation page.
The advantage of using this trick is you do not need to spend large money, especially for the first method, you only need to spend about one or two more dollars to get the second ip address assigned to your server, or double your server cost by adding one more if you want it to be more reliable. Also the setting is not too complicated, just add the nameserver / ip and install rsync. If there’s advantage, so there will be disadvantage, the dns failover depends on the end user’s dns, if end user’s dns is good then the dns shifting from the dead ip to the live ip will not be taking a long time, resolving the dns will be fast and smooth, otherwise if there’s a problem with end user’s dns, then the shifting will take more time, especially if you are implementing the second way and your both servers are located in two different areas or datacenters.
So that’s it for the simple failover (dns and static only files), we will continue later with the more advance failover.
Website: http://www.amerinoc.com
Download and Upload From International
Location
Location: US – Port Speed: 1Gbit – Method: WGET & cURL
Benchmark Test (I/O test disabled)
1 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10
1 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10
1 x System Call Overhead 1 2 3 4 5 6 7 8 9 10
1 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10
1 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
1 x Process Creation 1 2 3
1 x Execl Throughput 1 2 3
1 x Shell Scripts (1 concurrent) 1 2 3
1 x Shell Scripts (8 concurrent) 1 2 3
1 x Shell Scripts (16 concurrent) 1 2 3
2 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10
2 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10
2 x System Call Overhead 1 2 3 4 5 6 7 8 9 10
2 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10
2 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
2 x Process Creation 1 2 3
2 x Execl Throughput 1 2 3
2 x Shell Scripts (1 concurrent) 1 2 3
2 x Shell Scripts (8 concurrent) 1 2 3
2 x Shell Scripts (16 concurrent) 1 2 3
========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)
System: marlin: GNU/Linux
OS: GNU/Linux -- 2.6.32-x-xxx -- #1 SMP Thu Nov 3 04:23:54 UTC 2011
Machine: i686 (unknown)
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPU 0: Intel(R) Xeon(R) CPU E5620 @ 2.40GHz (4800.8 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT
CPU 1: Intel(R) Xeon(R) CPU E5620 @ 2.40GHz (4798.5 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT
23:34:10 up 21 days, 17:29, 2 users, load average: 0.08, 0.02, 0.01; runlev
el 2
------------------------------------------------------------------------
Benchmark Run: Tue Jan 17 2012 23:34:10 - 23:58:21
2 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 13891196.0 lps (10.0 s, 7 samples)
Double-Precision Whetstone 2514.5 MWIPS (10.0 s, 7 samples)
Execl Throughput 3592.8 lps (30.0 s, 2 samples)
Pipe Throughput 1627274.3 lps (10.0 s, 7 samples)
Pipe-based Context Switching 323155.8 lps (10.0 s, 7 samples)
Process Creation 9063.1 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 6728.0 lpm (60.0 s, 2 samples)
Shell Scripts (16 concurrent) 743.2 lpm (60.1 s, 2 samples)
Shell Scripts (8 concurrent) 1473.6 lpm (60.0 s, 2 samples)
System Call Overhead 2786067.0 lps (10.0 s, 7 samples)
System Benchmarks Partial Index BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 13891196.0 1190.3
Double-Precision Whetstone 55.0 2514.5 457.2
Execl Throughput 43.0 3592.8 835.5
Pipe Throughput 12440.0 1627274.3 1308.1
Pipe-based Context Switching 4000.0 323155.8 807.9
Process Creation 126.0 9063.1 719.3
Shell Scripts (1 concurrent) 42.4 6728.0 1586.8
Shell Scripts (16 concurrent) --- 743.2 ---
Shell Scripts (8 concurrent) 6.0 1473.6 2456.0
System Call Overhead 15000.0 2786067.0 1857.4
========
System Benchmarks Index Score (Partial Only) 1107.3
------------------------------------------------------------------------
Benchmark Run: Tue Jan 17 2012 23:58:21 - 00:22:35
2 CPUs in system; running 2 parallel copies of tests
Dhrystone 2 using register variables 28201519.6 lps (10.0 s, 7 samples)
Double-Precision Whetstone 5059.9 MWIPS (10.1 s, 7 samples)
Execl Throughput 8966.0 lps (30.0 s, 2 samples)
Pipe Throughput 3257035.4 lps (10.0 s, 7 samples)
Pipe-based Context Switching 646900.5 lps (10.0 s, 7 samples)
Process Creation 29956.3 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 11452.2 lpm (60.0 s, 2 samples)
Shell Scripts (16 concurrent) 728.7 lpm (60.1 s, 2 samples)
Shell Scripts (8 concurrent) 1464.8 lpm (60.1 s, 2 samples)
System Call Overhead 3960326.0 lps (10.0 s, 7 samples)
System Benchmarks Partial Index BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 28201519.6 2416.6
Double-Precision Whetstone 55.0 5059.9 920.0
Execl Throughput 43.0 8966.0 2085.1
Pipe Throughput 12440.0 3257035.4 2618.2
Pipe-based Context Switching 4000.0 646900.5 1617.3
Process Creation 126.0 29956.3 2377.5
Shell Scripts (1 concurrent) 42.4 11452.2 2701.0
Shell Scripts (16 concurrent) --- 728.7 ---
Shell Scripts (8 concurrent) 6.0 1464.8 2441.3
System Call Overhead 15000.0 3960326.0 2640.2
========
System Benchmarks Index Score (Partial Only) 2105.3
Summary
Yeah, again i got special promotion VPS, now it is XEN-HVM VPS
product of AmeriNOC, but i am not going to write down about this
discount, because it is just a regular packages with discounted
prices for a special day, not special packages with special
prices. Okay so now let’s start with CPU Power, just like stated
in their sales page, Dual Xeon Westmere E5620 @ 2.4GHz, great CPU
Node actually. For the speed, the information i read they are
using Dedicated Gigabit Network Interface Card per node and
100Mbps VNIC per VPS, that’s why i only got 6 – 10 megabyte per
second maximum, i suppose if they are using also Gigabit VNIC it
will be very good, lol. Next, disk I/O tests result was great,
210MB/s in average, because most of VPS provider’s disk I/O tests
only 150 – 180MB per second in average. The final test is
benchmark using UnixBench, and the score is 2105.3 points, this
provider can be classified as mid to hi-end vps provider.
AmeriNOC price versus box specification is reasonable, i mean it
is not very cheap also not to expensive. So i will personally
give 9 points out of 10 points for AmeriNOC XEN-HVM VPS.
Most of shared / reseller hosting providers that use cPanel as their control panel must have this order in their cPanel structure.
Example one Server with one IP address using cPanel
cPanel root / super user -> master reseller -> reseller -> shared
further down that many users / domains would use the ip
also cPanel shared hosting usually creates user directory under /home directory, so normally it will be hundreds of user directory right? but the screenshot says different, there is only one user directory
and when I up to directory above /home, there is no root directory
It is a little bit odd right? Yes and so it is called jailed SSH.
Basically, jailed ssh creates a shell scene within a particular directory where your shell activities locked in there. This intended to locked you into that directory instead of you being able to go freely to any other directories, something like ftp server does restrict you to your home directory. Also system administrator or host can decide or restrict what command or program can run in the jailed shell scene, usually they are disabling super user commands, so only basic shell command allowed to run in the jailed ssh.
Website: http://hostigation.com
Download and Upload From International
Location
Location: US – Port Speed: 1Gbit – Method: WGET & cURL
Benchmark Test (I/O test disabled)
1 x Dhrystone 2 using register variables 1 2 3 4 5 6 7 8 9 10
1 x Double-Precision Whetstone 1 2 3 4 5 6 7 8 9 10
1 x System Call Overhead 1 2 3 4 5 6 7 8 9 10
1 x Pipe Throughput 1 2 3 4 5 6 7 8 9 10
1 x Pipe-based Context Switching 1 2 3 4 5 6 7 8 9 10
1 x Process Creation 1 2 3
1 x Execl Throughput 1 2 3
1 x Shell Scripts (1 concurrent) 1 2 3
1 x Shell Scripts (8 concurrent) 1 2 3
1 x Shell Scripts (16 concurrent) 1 2 3
========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)
System: snapper: GNU/Linux
OS: GNU/Linux -- 2.6.32-5-686 -- #1 SMP Thu Nov 3 04:23:54 UTC 2011
Machine: i686 (unknown)
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPU 0: QEMU Virtual CPU version (cpu64-rhel6) (6784.9 bogomips)
x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
01:48:30 up 1 day, 19:58, 1 user, load average: 0.24, 0.07, 0.02; runlevel
2
------------------------------------------------------------------------
Benchmark Run: Thu Dec 29 2011 01:48:30 - 02:12:35
1 CPU in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 19050443.3 lps (10.0 s, 7 samples)
Double-Precision Whetstone 3291.8 MWIPS (10.0 s, 7 samples)
Execl Throughput 7224.8 lps (29.9 s, 2 samples)
Pipe Throughput 2355731.2 lps (10.0 s, 7 samples)
Pipe-based Context Switching 459056.4 lps (10.0 s, 7 samples)
Process Creation 26374.1 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 8588.7 lpm (60.0 s, 2 samples)
Shell Scripts (16 concurrent) 563.6 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 1125.3 lpm (60.0 s, 2 samples)
System Call Overhead 3855864.2 lps (10.0 s, 7 samples)
System Benchmarks Partial Index BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 19050443.3 1632.4
Double-Precision Whetstone 55.0 3291.8 598.5
Execl Throughput 43.0 7224.8 1680.2
Pipe Throughput 12440.0 2355731.2 1893.7
Pipe-based Context Switching 4000.0 459056.4 1147.6
Process Creation 126.0 26374.1 2093.2
Shell Scripts (1 concurrent) 42.4 8588.7 2025.6
Shell Scripts (16 concurrent) --- 563.6 ---
Shell Scripts (8 concurrent) 6.0 1125.3 1875.6
System Call Overhead 15000.0 3855864.2 2570.6
========
System Benchmarks Index Score (Partial Only) 1610.6
Summary
It was a good offer from Hostingation, “Get it while it lasts,
will not be seen again”. I will start with the VPS specification.
5GB space, 128MB Memory, 1 Core CPU, 500GB data transfers, and it
is KVM. See the benchmark score of this box, 1610 points, it is
very good and i guess because KVM. Disk I/O test also quite good,
100MB/s rate average. Next about the speed access, unfortunately
i only got 1 Megabyte per second, or maybe 10mb/s. If this box
used 100mb/s port then it will be a really good Xmas gift, but
with 20 dollars a year or $ 1.6 per month it is worth it than
your $3 or $5 OpenVZ VPS
. So i will give Hostigation’s Xmas
KVM special 9 points from 10 points.
Website: http://www.site5.com
Whois
Datacenter Whois
Spec and Features
System Information
Custom cPanel
Download and Upload From International
Location
Location: US – Port Speed: 1Gbit – Method: WGET & cURL
Load Time
Summary
This is the first time ever i reviewed Cloud Hosting (Shared)
provider, Site5 offers 30 Day trial before you decide to go with
them, okay let’s begin. First about their engine, take a look at
the CPU, Intel Xeon X5675 @ 3.07GHz, what a great CPU Power.
Unfortunately, great CPU Power doesn’t come with huge memory
power, i detected that they are using only 8GB memory. For the
speed, 100Mbps port i guess, i got 80% of their port speed when i
tested with wget, it is good. Load test result was also good, 40
clients accessing this hosting took 1 second to complete the
request, i am using wordpress standard installation anyway.
Last thing i want to talk about is the price, but before talking about the price, i want to review about the cloud hosting first. Here is what i know about cloud hosting, more than one set of computer and located in different place (we could say datacenter / network), all of those sets of computer are interconnected and we can access all of those sets of computer’s resources through the internet network. I may say that i have one PHP wget script in the first drive of computer one in the first cluster on the first datacenter, i run that PHP script and the result of the script is downloaded to the second drive of computer six in the third cluster on the second datacenter, at the same time the script using the power of the tenth computer’s cpu in the seventh cluster on the fifth datacenter. So cloud computing is scalable and full accessible, unimaginable how much cost to create such computer structure, and also the advantages that we could get from cloud hosting, for a basic example is failover. From those explanation, i guess their price vs spec is equal. So 9 points out of 10 points will be given to Site5.
Even though most of PHP applications is now running with PHP version 5.3, there are a few PHP applications are still running on PHP version 5.2, you can see what makes that thing happens here: http://php.net/manual/en/migration53.incompatible.php
So i guess it will be good for PHP programmer / developer to have PHP version 5.2 and 5.3 installed and running on the same machine (more economical than using two machines for each PHP version). So let’s get started.
Anyway i will use NginX as the webserver, so the main principle of two PHP version running on the same machine is CGI works using different localhost port.
Before installing PHP, we usually install webserver and database first, i assume that you all have installed NginX and MySQL, so i just skip to the PHP installation.
note: the configuration below is my usual config and dependencies, if you are experiencing error while configure or make php, try to find out about the missing dependencies by looking at this blog’s older posts or googling. The first four configuration of PHP will be the important note because we will separate PHP 5.3 and 5.2 configuration (php.ini) path.
--prefix=/usr/local53 --libdir=/usr/local53/lib --with-libdir=lib --with-config-file-path=/usr/local53/lib --prefix=/usr/local52 --libdir=/usr/local52/lib --with-libdir=lib --with-config-file-path=/usr/local52/lib
Install PHP 5.3.8 with PHP-FPM
wget http://pkgs.serversreview.net/files/autoconf-2.13.tar.gz tar -zxvf autoconf-2.13.tar.gz cd autoconf-2.13 ./configure make && make install wget http://pkgs.serversreview.net/files/php-5.3.8.tar.gz tar -zxvf php-5.3.8.tar.gz cd php-5.3.8 ./buildconf --force ./configure --prefix=/usr/local53 --libdir=/usr/local53/lib --with-libdir=lib --with-config-file-path=/usr/local53/lib --enable-force-cgi-redirect --enable-fpm --enable-cli --with-mcrypt --enable-mbstring --with-openssl --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/var/lib/mysql/mysql.sock --with-pdo-mysql=/usr/local/mysql --with-gd --with-zlib --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-png --with-jpeg --with-gmp --with-sqlite --enable-pdo --with-xpm-dir=/usr/lib --with-freetype-dir=/usr/include/freetype2 --with-ttf=/usr/include/freetype2 --enable-gd-native-ttf --enable-fileinfo --disable-debug --with-pic --with-bz2 --with-curl --with-curlwrappers --without-gdbm --with-gettext --with-iconv --with-pspell --with-pcre-regex --with-imap --with-imap-ssl=/usr/lib --enable-exif --enable-ftp --enable-magic-quotes --enable-sockets --disable-sysvsem --disable-sysvshm --disable-sysvmsg --enable-track-vars --enable-trans-sid --enable-yp --enable-wddx --with-kerberos --enable-ucd-snmp-hack --enable-memory-limit --enable-shmop --enable-calendar --enable-dbx --enable-dio --with-mime-magic --with-system-tzdata --with-odbc --enable-gd-jis-conv --enable-dom --disable-dba --enable-xmlreader --enable-xmlwriter --with-tidy --with-xml --with-xmlrpc --with-xsl --enable-bcmath --enable-soap --enable-zip --enable-inline-optimization --with-mhash --enable-mbregex make make install cp php.ini-production /usr/local53/lib/php.ini
Install PHP 5.2.17 with
PHP-FPM patch
wget http://pkgs.serversreview.net/files/libevent-2.0.16-stable.tar.gz tar -zxvf libevent-2.0.16-stable.tar.gz cd libevent-2.0.16-stable ./configure --prefix=/usr --libdir=/usr/lib make make install wget http://pkgs.serversreview.net/files/php-5.2.17.tar.gz tar -zxvf php-5.2.17.tar.gz cd php-5.2.17 wget http://pkgs.serversreview.net/files/php-5.2.17-fpm-0.5.14.diff.gz gunzip php-5.2.17-fpm-0.5.14.diff.gz patch -p1 < php-5.2.17-fpm-0.5.14.diff ./configure --prefix=/usr/local52 --libdir=/usr/local52/lib --with-libdir=lib --with-config-file-path=/usr/local53/lib --enable-force-cgi-redirect --enable-fastcgi --enable-fpm --with-libevent=/usr/lib --enable-cli --with-mcrypt --enable-mbstring --with-openssl --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/var/lib/mysql/mysql.sock --with-pdo-mysql=/usr/local/mysql --with-gd --with-zlib --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --enable-zend-multibyte --with-png --with-jpeg --with-gmp --with-sqlite --enable-pdo --with-xpm-dir=/usr/lib --with-freetype-dir=/usr/include/freetype2 --with-ttf=/usr/include/freetype2 --enable-gd-native-ttf --with-mime-magic --disable-debug --with-pic --with-bz2 --with-curl --with-curlwrappers --without-gdbm --with-gettext --with-iconv --with-pspell --with-pcre-regex --with-imap --with-imap-ssl=/usr/lib --enable-exif --enable-ftp --enable-magic-quotes --enable-sockets --disable-sysvsem --disable-sysvshm --disable-sysvmsg --enable-track-vars --enable-trans-sid --enable-yp --enable-wddx --with-kerberos --enable-ucd-snmp-hack --enable-memory-limit --enable-shmop --enable-calendar --enable-dbx --enable-dio --with-mime-magic --with-system-tzdata --with-odbc --enable-gd-jis-conv --enable-dom --disable-dba --enable-xmlreader --enable-xmlwriter --with-tidy --with-xml --with-xmlrpc --with-xsl --enable-bcmath --enable-soap --enable-zip --enable-inline-optimization --with-mhash --enable-mbregex --enable-memcache make make install strip /usr/bin/php-cgi sed -i 's/extension_dir/;extension_dir/g' php.ini-recommended cp php.ini-recommended /usr/local52/lib/php.ini
Next the configuration for php-fpm.conf PHP 5.3 and 5.2, the point you need to take a look is localhost and listen port
Version 5.3
mv /usr/local53/etc/php-fpm.conf.default /usr/local53/etc/php-fpm.conf nano /usr/local53/etc/php-fpm.conf
check listening port and set it to 9000, also don’t forget to change user and group to www
user = www
group = www
listen = 127.0.0.1:9000
Version 5.2
nano /usr/local52/etc/php-fpm.conf
check listening port and set it to 9001, change user and group to www
name=listen_address 127.0.0.1:9001
name=user www
name=group www
I am using “www“user and group for NginX and PHP, the rest setting for PHP 5.3 and 5.2 is yours.
Now we create init script for both PHP-FPM 5.3 and 5.2
Init script 5.3
nano /etc/rc.d/init.d/php-fpm53
case "$1" in
start)
/usr/local53/sbin/php-fpm --fpm-config /usr/local53/etc/php-fpm.conf
echo "PHP-FPM started successfully"
exit 1
;;
stop)
pkill php-fpm
echo "PHP-FPM stopped"
exit 1
;;
restart)
echo "Stopping php-fpm"
pkill php-fpm
sleep 2
echo "Starting php-fpm"
/usr/local53/sbin/php-fpm --fpm-config /usr/local53/etc/php-fpm.conf
echo "PHP-FPM restarted successfully"
exit 1
;;
*)
echo "Usage: start - stop - restart"
exit 1
;;
esac
Init script 5.2
ln -s /usr/local52/sbin/php-fpm /etc/init.d/php-fpm
make those init scripts executable
chmod +x /etc/init.d/php-fpm53 /etc/init.d/php-fpm52
Now let’s start both init scripts
/etc/init.d/php-fpm53 start /etc/init.d/php-fpm52 start
Check both PHP 5.3 and 5.3 binary files if they are already running
ps aux
Okay PHP 5.3 and 5.2 is now running together on the same machine, last thing you have to do is determine whether you want to use PHP 5.3 or 5.2 or both, here is the example of virtual host configuration using serversreview.net as domain.
user www www;
.....
.....
http {
server {
listen 80;
server_name serversreview.net;
access_log /home/www/serversreview.net/logs/access.log;
error_log /home/www/serversreview.net/logs/error.log;
location / {
root /home/www/serversreview.net/public_html/;
index index.html index.htm index.php;
}
location ~ .php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/serversreview.net/public_html$fastcgi_script_name;
}
}
}
you just need to switch the port 9000 for PHP version 5.3 and 9001 for PHP version 5.2 in this line
fastcgi_pass 127.0.0.1:9000;
That’s it! You are ready to roll your machine with PHP 5.3 and
5.2, if there is something you don’t understand or error while
you are setting this up, remember that Google is
your first aid, or we can discuss toghether about your confusion
here.