Passenger Enterprise is our commercial app deployment solution for enterprises. It is built on top of the tried and true open source version of Passenger, but comes with a number of key features tailored specifically to accomodate enterprises.
Downtime caused by application updates or human error can result in big losses in revenue. The additional features of 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.
Some other application servers also provide rolling restarts, but they often still require some manual process management. The rolling restart functionality of 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, Passenger Enterprise avoids double memory usage by restarting processes one-by-one.
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 Passenger Enterprise gain full multithreading capabilities. Unlike many other application servers, 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 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, Passenger Enterprise will automatically pick that up too.
Passenger Enterprise allows you to attach an IRB console to any live, running application process. With the IRB console you can inspect the application's state using Ruby code, and modify it in a REPL manner.
Web applications do not always behave correctly, whether it is because of a bug in the web application or a problem in an external system such as the database. Passenger Enterprise provides the ability to limit various aspects of application processes' resource usage.
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.
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.
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.
Passenger Enterprise allows you to attach a ruby-debug console to any live, running application process. With this console you can inspect and debug your application.