Why is Phusion Passenger timing out after roughly 60 seconds within docker container running a ruby app?

Viewed 1148

I'm running a ruby sinatra app inside passenger within a docker container using one of the passenger-docker images(phusion/passenger-ruby26). This app is a simple web app that makes calls to a database(it does not constantly talk with the database, statements are only called when a certain button is clicked). I can start the app up fine and click around in my web app for a short amount of time but it always errors out at around 60 seconds of uptime saying:

Could not spawn process for application /home/app/my_app: A timeout occurred while starting a preloader process.

Error ID: 3b9633ef

Error details saved to: /tmp/passenger-error-aFglsc.html

Mind you this happens even when I don't click anything. Within the html file it states:

The Phusion Passenger application server tried to start the web application, but this took too much time, so Passenger put a stop to that.

It suggests that the server may be low on resources but I've given it unlimited resources(4 core 2.2GHz, 16GB ram, & 4GB swap), here are the load averages(memory used was 3%)

load averages

Here is the 'Problem Location', shows that it errored out at the 'Load Application' subprocess.

problem location

Things I've tried:

  • Running passenger from Nginx(same error)
  • Removing all stdout logging functions in my ruby app
  • Increasing passenger_start_timeout
  • Making sure folder/file privileges are set correctly
  • Starting passenger with a custom nginx-config-template that maxes out timeouts and resources
  • Gave my docker container unlimited resources

Tried a few other miscellaneous things that I can't recall but those didn't prove effective either.

Does anyone have any idea what might be going on? I'll provide more info if needed.

Versions used:

  • Passenger 6.0.3
  • Ruby 2.6.3
  • Sinatra 2.0.5
  • Docker 18.09.0

Running on MacOS 10.14.6

1 Answers

Resolved. Turned out to be that I was running my ruby app twice. Had two instances of the run myapp command in the main app.rb and the config.ru rackup config file. Should only have one instance of that in ruby project.

Related