I am pleased to announce Sol: our 6th hosting platform release since 2002. Sol incorporates the stability engineered on Helios, and improves upon performance by partitioning hosting servers into smaller, agile containers through virtualization while maintaining rivaling bare-metal performance with less than 5% decrease in throughput. Sol takes less than 20 seconds to boot up, and is stuffed with great features including support for PHP 5.6, Rails 4, Ruby 2.2, Django 1.7, and Python 3.4.
Sol will go through an open beta program over the next week to work out and last minute issues. Open a ticket if you would like migration. The process takes 24 hours, is fully automated, and will create zero downtime.
Ruby, Python, and Node.js Support
Overall, Sol provides clients with more options and more value than ever before. Beyond Rails 4 and Ruby 2.2, Sol includes support via RVM for multiple concurrent versions allowing you to run Rails 2 through Rails 4.0 on Ruby 1.8.7 all the way up to Ruby 2.2. Use rvm list
to list available Rubies, rvm use
to use a particular Ruby, and passenger-config --ruby-command
to configure Passenger to launch your process using the specified Ruby. More details are available without the Resource Center. Passenger supports launching of Node.js and Python (Django) apps by specifying, within a .htaccess file, PassengerEnabled on
and PassengerNodejs <interpreter>
or PassengerPython <interpreter>
. We’re also working on adding multiple Python version support via pyenv. Multiple Python versions are there, but no documentation as of yet. Rumor has it there’s also multiple PHP version support via phpbrew, but PHP is the last offender to leave a backwards-incompatible, scorched earth policy like Ruby and Python.
CentOS 7 Base Filesystem
RedHat did a thing right by patterning its seventh major Enterprise Linux release off Fedora 19, released July 2013, by delivering recent software to Enterprise markets. Previous RHELs based on much older Fedora releases leaving us and likewise you, our clients, behind in yesterday’s greatest instead of today’s greatest software including systemd. It is a gorgeous service manager written in C, instead of bash shell scripts like its SYSV predecessor, and fast. Really, really fast. From boot, it takes just 20 seconds to boot of which 7 seconds are wasted confirming and loading the Linux kernel. Actually, the system boots up in 13.26 seconds. systemd also constantly monitors and restarts processes that fail, so it can restart a downed mail server or web server instantly instead of waiting for our 2-minute periodic checks to kick in and restart a downed process.
Virtualization, Baby!
Helios is a massive server. A true gargantuan hosting over 1,000 domains. It’s strong, and over the last year only had 1 isolated outage resulting in 99.999% uptime. Not bad, but that one time Helios did go down, it took some time to recover. Take Helios, send it to fat camp, and you get Sol. Instead of filling out a modern server with clients, and creating a bloated web server, database server, and mail server handling enormous configuration files – HTTP server configuration is 800 KB! (each HTTP process is 300 MB) – keep it smaller by partitioning a hosting server into smaller units. We lose some storage by duplicating filesystems among multiple units, but also create smaller HTTP configuration and likewise a nimble server. Beyond basic virtualization through KVM, Sol uses LVM for its filesystem mapping that allows speed close to bare metal. Normal reads are 340 MB/s. Virtualized with LVM it’s 334 MB/s. Less than 2% loss in performance. Not bad!
Sol, and its cohorts, start with 16 GB memory, but can dynamically request up to 38 GB from its hypervisor should memory come under pressure via a balloon driver and release it when it’s done. If a server comes under resource pressure there is less chance of a hiccup, because now resources are shared on-demand between VMs. Even networking is virtualized through SR-IOV. A single NIC appears as 7 virtual NICs and again results in some marginal throughput losses. Much better than a software-emulated NIC or bridging that would otherwise be necessary and slow.
Miscellaneous Improvements
- We also include Go and PHP 5.6 now. APC is gone. All hail OPCache! This should clear up some blank page issues we have seen in the past with certain PHP applications.
- Maildrop filters now support \r\n EOL terminations for Windows users. Before, \r\n would throw a parser error.
- Switched from our in-house monitoring scripts to Monit for performance and flexibility. There may be some service bumps in the road over the next couple weeks as this transition completes.
- Percona MySQL is out. MariaDB is in. Percona was significantly more stable than MySQL, but still had some stability issues in particular scenarios. MariaDB is based off MariaDB 5.5 (MySQL rebase) with backports from MariaDB 5.6 in addition to code from MariaDB’s community of programmers.
- Namebased shared hosting now rotates from a pool of IP addresses to reduce the impact of a null-route in the extraordinary event that a namebased account receives a denial of service attack.
- PHP 5.6’s native OPcache module obsoletes APC for caching, but lacks userland caching via apc_add()/apc_fetch(). Userland caching spun-off as APCu, which is installed on Sol (thanks Brian Scholer!)
- Primary user can su to other users now without password prompts
- UTF-8 replaces latin1 as default charset for MySQL databases
Happy hacking!
Matt Saladna
Owner & Platform Architect
Pretty cool stuff! I was taking advantage of APC on Helios in W3 Total Cache (a very popular wordpress caching plugin). I’ve already asked them if OPCache will be supported (it’s not listed in the plugin options), but I’m wondering if you have any early reports of using the object caching in w3tc with OPCache.
APC is implicitly activated on all accounts, so caching happens unless you explicitly disable it by setting apc.cache_by_default in .htaccess or ini_set(). OPcache operates in the same manner on Sol by precompiling bytecode and keeping it cached in memory. It is more performant and according to reports, more reliable than APC.
OPcache doesn’t have userland caching support, but APC spun off userland caching into a separate module called “apcu” (clever!). It’s definitely a good idea to keep userland caching on Sol. apcu is on there now with full backward compatibility.
Thanks for the suggestion!
Great, thanks! One more question, about this: “Namebased shared hosting now rotates from a pool of IP addresses”
What does this mean for those of us who don’t use apis DNS? My sites are behind CloudFlare for example.
Assignment occurs during account creation and remains fixed. Once an account is provisioned on that server, it receives 1 of 4 IP addresses to reduce the amount of domains on 1 IP address. Accounts that opt for a dedicated IP will continue to operate as they have in the past: only domains under that account are assigned that reserved IP address.
@Brian-
OPCache will indeed be supported in the next W3 Total Cache release.
Pingback:apnscp Update: 120 Bugfixes, Enhancements, and Compatibility Changes | Apis Networks Community Updates
Pingback:Determining Platform Version | Apis Networks Knowledge Base