Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
Repo info
  • 06:35
    dalibor closed #2719
  • 06:35
    dalibor commented #2719
  • 06:27
    dalibor opened #2728
  • 04:40
    Uysim closed #2727
  • 04:40
    Uysim commented #2727
  • Oct 26 20:25
    MSP-Greg commented #2719
  • Oct 26 20:09
    dentarg commented #2719
  • Oct 26 17:11
    dnasevic-godaddy commented #2719
  • Oct 25 22:10
    nateberkopec closed #2720
  • Oct 25 22:10
    nateberkopec commented #2720
  • Oct 25 22:09
    nateberkopec commented #2726
  • Oct 25 22:09
    nateberkopec closed #2726
  • Oct 25 22:09

    nateberkopec on master

    Update History.md (compare)

  • Oct 25 15:48
    MSP-Greg commented #2727
  • Oct 25 15:33
    nateberkopec commented #2727
  • Oct 25 06:25
    Uysim edited #2727
  • Oct 25 06:10
    Uysim opened #2727
  • Oct 23 13:46
    l33z3r commented #2425
  • Oct 21 14:06
    nateberkopec commented #2725
  • Oct 21 14:05
    nateberkopec labeled #2725
Blane Dabney
you should have seen Cannot redirect STDERR to <your invalid path> in the puma error log
Oh, I think I see what might be the issue there. That exception will get swallowed depending on how you start Puma
Brian Purgert
Starting puma automatically?
How do
Brian Purgert
**How do I start puma automatically, aka what is the recommended method? Ive just been running puma in a screen session.
Blane Dabney
@BrianPurgert that's completely dependent on your system, deployment strategy, etc.
You might make an init.d script, or a systemd service, or could be a monit config, a line in /etc/rc.local, a launch daemon plist file (for OS X), etc etc
Howdy all!
Emba Moussa
hi, anyone hit the wall with ubuntu 16.04?
Blane Dabney
Jonathan Boler
Does anyone run puma on jRuby using JVM server mode?
As far as I can tell puma defaults to running in JVM client mode and I can't find anything online about running it in server mode
Something like jruby --server $(which puma)
Jonathan Boler
After further research it looks like everything on 64bit is run in server mode these days
David Blewett
I'm having trouble configuring Puma to accept connections from rust client code (using the rustls crate). No matter what I try, I end up with: #<Puma::MiniSSL::SSLError: OpenSSL error: error:1408A0C1:SSL routines:ssl3_get_client_hello:no shared cipher - 336109761>
Blane Dabney
I believe this is a long-standing issue: puma/puma#1339
most folks resort to using a separate reverse proxy to handle SSL
David Blewett
Blane Dabney
Though, it might have something to do with SNI
if your Puma SSL works otherwise, but not when connecting with Rust, that may be the issue
David Blewett
hmm; I turned SNI off in the rust client request and it still fails
I think it might be something to do with the signature_algorithms in the request
Blane Dabney
that's possible too
Tomas Ruzicka
Anybody here has any experience with debugging timed out workers in puma on heroku?
It might not be an issue with puma itself, but it is kinda difficult to dig more information from the runtime to repro the case
Essentially from time to time a worker gets stuck and times out the internal ping check timeout:
955422512366379010    2018-07-16T07:55:00    2018-07-16T07:55:00Z    47022513    pb-com    Local7    Info    app/web.2    [3] ! Terminating timed out worker: 14459
955422516652969998    2018-07-16T07:55:01    2018-07-16T07:55:01Z    47022513    pb-com    Local7    Info    app/web.2    I, [2018-07-16T07:55:01.116331 #14500]  INFO -- : Installing Puma worker loop.
955422516787187716    2018-07-16T07:55:01    2018-07-16T07:55:01Z    47022513    pb-com    Local7    Info    app/web.2    [3] - Worker 0 (pid: 14500) booted, phase: 0
We have mitigated the issue a little bit by setting a lower worker_timeout so that the check is more frequent, but that doesn't help us solve the root cause :(
Tomas Ruzicka
We have also tried changing the config to puma single mode with more threads. We're seeing weird restart problems with that config.
When we try to restart the stuck dyno with heroku ps:restart it times out even the restart phase and Heroku issues SIGKILL:
Sep 12 10:27:23 pb-com heroku/web.3: Stopping all processes with SIGTERM 
Sep 12 10:27:53 pb-com heroku/web.3:  Error R12 (Exit timeout) -> At least one process failed to exit within 30 seconds of SIGTERM 
Sep 12 10:27:53 pb-com heroku/web.3:  Stopping remaining processes with SIGKILL 
Sep 12 10:27:53 pb-com heroku/web.3:  Process exited with status 137
Hello. I'm curious if there is any specific security guidance on configuring puma?
Harm de Wit
Hi, does anyone know when the next release will be? I'm waiting for an already merged PR to be released, last release was in July :sweat_smile:.
Cory Christensen
I would also like to know when the next release will be...I'm waiting for @harmdewit 's PR :)
Jules Ivanic

Hello everyone,

I’m moving my Ruby MRI Rails app to JRuby and I’m worried about multi threading.

I used to use the Unicorn server which is a multi-processes server and I’m moving to JRuby and Puma (multi-threaded).

I’m looking, thanks to VisualVM, how the threads behave when I’m pushing several HTTP calls to the app and I see a lot of thread doing nothing.

How can I check that calls are correctly dispatched to threads ?
Here’s a screenshot of visualVM: https://www.dropbox.com/s/w43paa57m5jf8l3/Screenshot%202018-11-14%2015.18.55.png?dl=0

David Hollinger III

Anyone here that can help me with puma not starting with a Sinatra app?


workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['THREAD_COUNT'] || 5)
threads threads_count, threads_count

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

Error message

$ bundle exec puma -C config/puma.rb
bundler: failed to load command: puma (/home/dhollinger/.asdf/installs/ruby/2.5.1/bin/puma)
NoMethodError: undefined method `workers' for main:Object
  /home/dhollinger/workspace/ruby/puppet_webhook/config/puma.rb:1:in `<top (required)>'
  /home/dhollinger/.asdf/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/puma-3.12.0/lib/puma/cli.rb:4:in `require'
  /home/dhollinger/.asdf/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/puma-3.12.0/lib/puma/cli.rb:4:in `<top (required)>'
  /home/dhollinger/.asdf/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/puma-3.12.0/bin/puma:6:in `require'
  /home/dhollinger/.asdf/installs/ruby/2.5.1/lib/ruby/gems/2.5.0/gems/puma-3.12.0/bin/puma:6:in `<top (required)>'
  /home/dhollinger/.asdf/installs/ruby/2.5.1/bin/puma:23:in `load'
  /home/dhollinger/.asdf/installs/ruby/2.5.1/bin/puma:23:in `<top (required)>'
Can anyone assist me with dealing with this?
Ok, so the temporary solution was to use a different version of the puma gem
What is the default directory for puma request errors?
*for logs in regard to this
Hey, I'm having a problem with Thread.current variables being nil in the model, despite being initialized by Rails initializers. The gem in question is PublicActivity and I'm running Rails 6. I tried before_fork and on_worker_boot, but my presumption is, that Rails 6 does some threading on top of whatever server it is running on. Is that possible?
Alexander Fedulin
worker is a process, it spawns threads. That’s why setting values in before_fore/on_worker_boot gives you nils in requests
Olle Jonsson
I'm getting the hang of writing tests for Puma, it's a bit like writing tests for Python. Very concrete.
Ben Dean

I have a rails app (written by an outside company) running in Puma 3.11.4 on Ruby 2.2 (I know, sorry) and am running into all sorts of errors that I think have already been fixed in newer versions. As part of figuring out what's going on sorting out TLS problems and 100% CPU puma, our vendor tells us that it is "best practice" to not have Puma handle TLS but instead have nginx in front.

currently we have (more or less):
puma (in docker container) <---TLS port--- AWS Application Load Balancer <---TLS port------ some browser

and the vendor says that the well established best practice is:
puma (in docker container) <---TCP port--- nginx <----TLS port---- AWS Application Load Balancer <---TLS port------ some browser

because "puma isn't meant to handle TLS"

is that correct at all? I can't find anything to support it with some rudimentary searching. Also having two proxies seems like we're just asking for trouble.

I'm also just trying to update their code to use newer Puma and newer Ruby where I suspect those TLS issues will be fixed (at least from reading the CHANGELOG.md)

Blane Dabney
Yes, it's pretty standard practice for most web applications these days to allow your reverse proxy (typically nginx) to handle TLS
There's other reasons to use a reverse proxy in front of your Rails app as well