Welcome to another edition of apnscp changes! Important changes include Rails infrastructure changes from Ruby 1.8 + FastCGI to Ruby 1.9 +
mod_rails, new multiple worker backend (apnscpd), CDN to distribute static content with minimal bandwidth overhead (
http://getap.is), and an aggressive caching framework to reduce bottlenecks.
mod_rails
After several custom patches, mod_rails is a possibility for our clients. mod_rails provides the same great, secure setup experienced with FastCGI, but without the nasty suexec headaches. Perform an upgrade from Ruby 1.8 via Development > Code Frameworks. Gems will be migrated to Ruby 1.9 during the upgrade process. After upgrading add the necessary .htaccess directives found in the
Rails Quickstart
Easy Task Scheduling (@token)
Another nice feature coming on the heels of a planned server outage is support for crontab @ time tokens. @reboot executes a task on start-up, which obsoletes rc.d support, @hourly executes once per hour, @daily, @weekly, @monthly, and @yearly are additional special times recognized by crontab. Each scheduling time is guaranteed to execute once during an interval, but the minute/hour vary. Both minutes (@hourly/.../@yearly) and hours (@daily/.../@yearly) are evenly distributed among all accounts to prevent CPU bottlenecks caused, for example, by multiple hourly tasks occurring at 12:00 AM, 1

o AM, 2:00 AM...
apnscpd multi-tasking backend
Finally, the nicest improvement, based upon effort, includes a bevvy of performance optimizations culminating with a client-server replacement for the single-user privileged processor necessary for carrying out filesystem management of the account... that forked on
every single privileged request. For example, loading up the File Manager may generate as many as 5 separate forks of the privileged processor "lservice" [this name is about as old as the concept apnscp itself]. Now a master distributes work to one of several concurrent workers awaiting further instruction. Best of all no additional forking required unless a worker dies on the job. Another area of concern included sharing caches between the privileged processor and UI. This was solved by implementing multi-tiered
memcached framework.
As a comparative benchmark, requesting directory contents within the File Manager has
decreased from 250 ms per request to 17 ms - a 14x improvement. Speeding up code wasn't enough. Static content is now offloaded to a separate CDN (
http://getap.is - clever?) to eliminate cookies, add caching, and reduce bandwidth overhead too. Overall the latest set of changes should produce a noticeable improvement in responsiveness and allow you to get things done faster than ever before.
...
With that being said - let's leave this open for Ruby 1.9/mod_rails questions.