Passenger 5.0.24: WebSocket fixes, Nginx 1.8.1, improvements

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.

Nginx 1.8.1

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.

Bug fixes

  • 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 $ERROR_INFO in at_exit callbacks. Closes GH-1730.
  • [Standalone] Fixes the default value of the load_shell_envvars option. It's supposed to be disabled by default, but due to a typo it was enabled by default.

Improvements

  • Adds socket_backlog option 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)

Installing 5.0.24

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!

OS X
OS X
Debian
Debian
Ubuntu
Ubuntu
Heroku
Heroku
Red Hat
Red Hat
CentOS
CentOS
Ruby gem
Ruby gem
Tarball
Tarball
Ruby gem
Docker

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 user@99.99.99.99: 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.

Final

Phusion Passenger's core is open source. Please fork or watch us on Github. :)

[img

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!

comments powered by Disqus