Follow Up: VPS Providers (Alien VPS versus Chicago VPS)
Back in December 2011 I wrote a high level article comparing a few VPS Providers. After settling on AlienVPS, I decided to pick up a VPS instance from a competitor (Chicago VPS) and track their uptime and performance over time.
It has been over 150,000 minutes since I started tracking uptime and performance on these servers (14-January-2012). I've sifted the data and have a few things to say about each provider.
Notes:
- AlienVPS Homepage [alienvps.com]
- ChicagoVPS Home page [chicagovps.net]
- Low End Box website (Excellent non-spammy review site) [lowendbox.com]
- OpenVZ Homepage (One type of VPS Virtualization) [openvz.org]
General Information:
AlienVPS Plan:
- Plan: OpenVZ Specials (New York) - WARP 2
- CPUs: 4 VCPU
- Disk Space: 30GB
- RAM: 1GB
- VSwap: 1GB
- Monthly Bandwidth: 1 Terabyte
- Price: $8 per month
- This was a Holiday Special
ChicagoVPS Plan 1:
- Plan: OpenVZ VPS - Enterprise
- CPUs: 4 Virtual CPUs
- Disk Space: 50GB
- RAM: 2GB
- Burst Mem: 2GB
- Monthly Bandwidth: 2 Terabytes
- Cost: $7 per month
- This was some sort of a Sale that I took advantage of
ChicagoVPS Plan 0:
- For a short time I had the Standard plan from ChicagoVPS
- Disk Space: 20GB
- RAM: 512MB
- Monthly Bandwidth: 1TB
- Cost: $9.95 per month
General Thoughts:
- You get what you pay for. At the end of the day these companies are trying to stay in business and will try to squeeze as many paying customers out of a Node as they can.
- These are sub $10 per month VPS so I expect a lot of cramming.
- Special Offer VPS plans may not be all that great of a deal.
- When I first started with AlienVPS I had a few days of terrible uptime until I got frustrated enough to have them move me off of their NY15 / NY16 nodes to a reliable one (NY13).
- With ChicagoVPS I found that their 'Standard' plan actually felt pretty snappy. But when I took advantage of a special promotion to get an Enterprise VPS, performance dropped off noticeably. I'll touch on this below in the Performance section
AlienVPS Thoughts:
- I have had some trouble with the auto bill pay feature. This last month it failed to charge my credit card. This took my VPS offline for about a day while I resolved the payment situation.
- After signing up for my 'special' plan it took them a few days to move it to a stable Node in their New York data center. I had to ask them to move it.
- Over time this Alien 'special' VPS has remained 'up' longer than the Chicago 'special' VPS.
- Over time the Alien VPS has been more performant than the Chicago one
ChicagoVPS Thoughts:
- I have had no payment or other general account issues with Chicago VPS.
- The Enterprise 'special' VPS that I have through them is not as performant over time as the Alien VPS
Uptime Testing Setup
To test VPS Uptime I created a couple of crontab jobs on a server I have running in my basement. These jobs were setup to run every minute so I would have 1440 uptime datapoints for each day:
* * * * * /home/rion/check_vm_alien_vps.sh >> /home/rion/alien_uptime.txt
* * * * * /home/rion/check_vm_chicago_vps.sh >> /home/rion/chicago_enterprise_uptime.txt
This is the script which is used to determine if the host is 'up'. It ties into the SolusVM API that each provider makes available:
#!/bin/bash
#
# This script will tell you the current
# Status of a VPS by using the SolusVM
# Client API
# Define the Hosting provider API address
solus_provider=manage.chicagovps.net
# Define the port (5656 for chicagovps)
solus_port=5656
# Define the Client API Key
client_key=ZBTV5-02BR3-CBMPA
# Define the Client API Hash
client_hash=91000000000e0681451b93826b594122334a5e66
# Define the action (status)
client_action=status
# Build the wget command
command="wget -qO- /dev/null https://$solus_provider:$solus_port/api/client/command.php?key=$client_key\&hash=$cli$
# Run the command and capture the output to a variable
result=$(eval $command)
#
# Print the date date
#
# Check VPS status
#
regex="()(.+)()"
if [[ "$result" =~ $regex ]]
then
#echo ${BASH_REMATCH[0]}
echo "IP Address ${BASH_REMATCH[2]}"
else
echo "blah, no IP address returned"
fi
if [[ "$result" == *\success\* ]]
then
echo "successful query"
else
echo "unsuccessful query"
if [[ "$result" == *\success\* ]]
then
echo "VPS is Online"
else
echo "VPS is OFFLINE!!"
fi
echo " "
echo " "
The Script writes out the following information (which is appended to a file using the crontab statements above):
Sat Jan 14 07:49:01 MST 2012
IP Address 206.221.219.37
successful query
VPS is Online
Uptime Test Results (From 14-Jan-2012 to 28-Apr-2012)
AlienVPS - Warp2 Special:
- Down for 56 Minutes out of the last 151584 Minutes
- Downtime was 0.04%
(If you count down time resulting from credit card processing failures, it jumps to 0.8%)
ChicagoVPS - Enterprise Special:
- Down for 430 Minutes out of the last 151584 Minutes
- Downtime was 0.2%
Performance Testing Setup
I created a test script which exercised the Network Interface, File System and (minimally) the CPU. This script ran every 3 hours to get a feel for how the system performs during various times of the day and performed the following actions:
- Installed Firefox
- Uninstalled Firefox
- Download a 45MB file
- Copy the 45MB file to another location
- Delete the 45MB file and its copy
Here's the script (won't work as-is since the test data file has been removed):
#!/bin/bash
# This performs a few activities and times how long they take
# Meant to be used to compare speed between chicagoVPS and alien
# Activities:
# Install firefox
# Uninstall firefox
# Download an (approx.) 45MB file
# Make a copy of the file
# Delete the 45MB File and the copy
date_begin=$(eval date)
yum -y install firefox
yum -y remove firefox
wget -O /root/w.zip /attachments-cc5/transfer/Minecraft_worlds.zip
cp /root/w.zip /root/w2.zip
rm -rf /root/w.zip
rm -rf /root/w2.zip
date_end=$(eval date)
echo "Begin: $date_begin"
echo "End: $date_end"
This script was kicked-off by a crontab job set to run every 3 hours. Here is the crontab entry:
00 3,6,9,12,15,18,21 * * * /root/speed_test.sh >> /root/speed_results.txt
When I was gathering data for this article I ran the following command to strip out the unnecessary data lines:
cat speed_results.txt | egrep -w 'End:' > speed_results_filtered.txt
Performance Testing Results (From 14-Jan-2012 to 28-Apr-2012)
The performance testing script I used was not all that intensive. I was able to gather some interesting information, though:
AlienVPS - Warp2 Special - NODE NY13:
Time of Day (Mountain Time) Time to Complete tests
- 0300 - Between 38 seconds and 4.5 minutes (Normally around 1.5 Minutes)
- 0600 - Between 40 seconds and 7 minutes (Normally around a Minute)
- 0900 - Between 30 seconds and 5 minutes (Normally less than a minute)
- 1200 - Between 20 seconds and 2.5 minutes (Normally less than 30 seconds)
- 1500 - Between 28 seconds and 3 minutes (Normally around 1.5 Minutes)
- 1800 - Between 17 seconds and 2 minutes (Normally around a Minute )
- 2100 - Between 23 seconds and 3 minutes (Normally around a Minute )
ChicagoVPS - Enterprise Special NODE VPS21:
Time of Day (Mountain Time) Time to Complete tests
- 0300 - Between 2 minutes 45 Seconds and 7 minutes (Normally around 3 Minutes)
- 0600 - Between 24 seconds and 6.5 minutes (Normally around 1.5 Minutes)
- 0900 - Between 17 seconds and 8.5 minutes (Normally around 2.5 Minutes )
- 1200 - Between 52 seconds and 8 minutes (Normally around 2 Minutes)
- 1500 - Between 30 seconds and 6.5 minutes (Normally around 2 or 3 Minutes)
- 1800 - Between 17 seconds and 6 minutes (Normally around a Minute)
- 2100 - Between 16 seconds and 7 minutes (Normally around 2 Minutes )
Uptime & Performance Conclusions
- AlienVPS (Node NY13) appears to be a more consistent performer than ChicagoVPS (Node VPS21), generally delivering faster speeds throughout different times of the day
- Given the number of nodes your VPS could land on, this isn't saying much
- Your performance could be better or worse than this
- My AlienVPS appears to win the Uptime race as compared to my ChicagoVPS (If you don't count billing issues)
- I tried both a Standard server and an Enterprise 'special' server from ChicagoVPS. While the Standard one had a quarter of the ram, half the monthly bandwidth, less disk space and fewer dedicated CPUs, I found that it was twice as fast to get everything installed that I wanted and that it felt more snappy** in general:
- Enterprise Special Install time: 5.5 Minutes (I have a standard install script)
- Standard Install Time: 2 Minutes (Standard Install Script)
** 'Snappy' is a subjective term. Things just seemed to happen faster on the Standard VPS as compared to my 'special' Enterprise VPS. In the future I'll try to avoid being lured in by the 'special' VPS offers. - Overall I'm amazed that both of these sub $10 per month Virtual Private Servers are in the 99%+ uptime range.