POWERED 24/7 BY PHUSION PASSENGER ENTERPRISE
Phusion Passenger Enterprise is our commercial app deployment solution for enterprises. It is built on top of the tried and true open source version of Phusion Passenger, but comes with a number of key features tailored specifically to accomodate enterprises. In such environments, downtime caused by application updates or human error can result in big losses in revenue. The additional features of Phusion Passenger Enterprise are designed to minimize downtime in these situations. It does this by providing your business with the means to seamlessly update applications, manage applications and control your server resources even better.
Don't temporarily freeze your website when restarting or deploying a new release. In the open source version of Phusion Passenger restarting an application involves shutting down all application processes and spawnining new ones. Because starting a new process can take a long time (depending on the application), visitors may experience slow responses while the restart is in progress. With rolling restarts, Phusion Passenger Enterprise restarts your application processes in the background. Phusion Passenger replaces each existing application process one-by-one, without causing any slow responses for visitors.
Some other application servers also provide rolling restarts, but they often still require some manual process management. The rolling restart functionality of Phusion Passenger Enterprise is completely automatic and does not require any administrator setup or intervention. Other application servers may also use up to twice as much memory while restarting, because they first start multiple new application processes before shutting down the old ones. In contrast, Phusion Passenger Enterprise avoids double memory usage by restarting processes one-by-one.
Phusion Passenger Enterprise is designed from the ground up for speed and concurrency. Multithreading support not only drastically reduces the amount of memory required to run applications, but is also essential for applications that often block on I/O, such as real-time applications or applications that perform many HTTP API calls.
Applications that run under Phusion Passenger Enterprise gain full multithreading capabilities. Unlike many other application servers, Phusion Passenger uses a hybrid multiprocessed, multithreaded and evented concurrency model, allowing the best of all worlds.
In the event that an updated application fails to start (because of a configuration error, syntax error in the source code, or whatever), the open source version of Phusion Passenger will shut down all application processes and display an error. Phusion Passenger Enterprise offers deployment error resistance: when it encounters an error it will report the error to the logging system and "freeze" the process list. It will neither start any new processes, nor shut down any existing processes, until the administrator has signaled that the problem has been solved. This ensures that the web application stays up and running as long as possible.
If you host a lot of different web applications on a single server, this feature will be useful to you. Point Phusion Passenger Enterprise to a directory, and it will automatically deploy all web applications in that directory. Each web application will be assigned its own virtual host, where the host name is the same as the web application directory name. If you add or remove a web application, Phusion Passenger will automatically pick that up too.
Phusion Passenger Enterprise can enforce a maxiumum time limit on a request. If the process is not done sending its response after that time, it is forcefully shut down with SIGKILL. This time limit can be configured on a per-request basis.
Phusion Passenger Enterprise can enforce a maximum per-process memory usage. Unlike most memory limit enforcement tools, Phusion Passenger Enterprise measures memory usage by calculating the private dirty RSS. This is the best method to calculate the true memory usage of a process because it does not count shared memory.
Phusion Passenger Enterprise's memory usage limiting is graceful. This means that it shuts down the process after it is done with all current requests, so visitors do not get to see any errors.
Mechanisms such as vsize ulimit and rss ulimit are incorrect (they measure the wrong memory usage), buggy (rss ulimit does not work on Linux) or are not graceful (ulimit forcefully kills the process).
You can configure the maximum number of application processes that may be spawned by a specific application. This number is configurable on a per-application basis. This way you can ensure that less important applications will not end up spawning so many processes that they starve resources for more important applications.