Version 5.0.24 of the Phusion Passenger application server for Ruby, Python, Node.js and Meteor has been released. It resolves some issues surrounding websockets, features improvements for heavy load conditions, and prefers Nginx 1.8.1 with vulnerability fixes.
If you hadn't already, be sure to check out the many major improvements that the 5.x series of Passenger introduces. And please be aware that you can enjoy enterprise features and sponsor the open source development directly by buying Phusion Passenger Enterprise.
Last week, Nginx 1.8.1 was released with fixes for vulnerabilities (CVE-2016-0742, CVE-2016-0746, CVE-2016-0747) in the resolver. This is now the preferred Nginx version for Passenger.
Fix for new concurrency option
In 5.0.22 we introduced the
force_max_concurrent_requests_per_process option to enable dynamic process scaling for Node.js and Meteor apps. The option also replaces an old workaround for Ruby apps to maximize performance for Websockets/Server Sent Events, but trying this resulted in a crash (GH-1720). This is now fixed.
Fix for core hang with 100% CPU
There was an incorrect loop exit condition that could cause a deadlock with 100% CPU usage by the Passenger core (GH-1709, GH-1732). The code was introduced in Passenger 5 and appears to be triggered only in certain cases and in relationship to websockets, so we only started seeing the effects very recently. It is fixed in this release.
- Fixes Solaris compilation. This was a regression due to the patch for GH-1643 in 5.0.22. Closes GH-1694, GH-1701.
- Fixes cases where compilation failure of (optional) native utils was not reported.
- On Ruby, no longer traps SIGEXIT. This fixes erroneously setting
at_exitcallbacks. Closes GH-1730.
- [Standalone] Fixes the default value of the
load_shell_envvarsoption. It's supposed to be disabled by default, but due to a typo it was enabled by default.
socket_backlogoption to configure the Passenger Core socket backlog. For use with e.g. "Resource temporarily unavailable while connecting to upstream" errors. Closes GH-1726.
- Logs for Union Station provide more information about request queueing. Closes GH-1633.
- Also log HTTP headers to Union Station for HTTP 4xx responses (extends the header logging for HTTP 5xx that was added in 5.0.22)
Please see the installation guide.
Upgrading to 5.0.24
We strongly advise staying up to date with the latest version, especially considering the Nginx vulnerability fixes included in this release.
See also the upgrade notes below!
If you are upgrading from 4.x, please read the 5.0 upgrade notes to learn about potential upgrade caveats.
Special notes about capistrano-passenger
If you are using Capistrano and [capistrano-passenger], then it may fail with this error:
SSHKit::Runner::ExecuteError: Exception while executing as firstname.lastname@example.org: undefined method `' for nil:NilClass NoMethodError: undefined method `' for nil:NilClass Tasks: TOP => passenger:restart
This is due to an incompatibility in capistrano-passenger with Passenger 5.0.22 and later. Please upgrade capistrano-passenger to 0.2.0 or later.
Phusion Passenger's core is open source. Please fork or watch us on Github. :)
Union Station is Phusion's brand new take on Passenger application monitoring and analytics. Union Station aims to help you easily find performance bottlenecks and errors in your application and to help you fix them. Sign up for a free trial today!