Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 19:09
    machty commented #1303
  • 17:50

    nateberkopec on master

    CONTRIBUTING: file limits [ci … (compare)

  • Jan 22 15:05

    MSP-Greg on master

    Updates for OpenSSL 3 (#2800) (compare)

  • Jan 22 15:05
    MSP-Greg closed #2800
  • Jan 22 12:54

    nateberkopec on master

    Log environment using option va… (compare)

  • Jan 22 12:54
    nateberkopec closed #2799
  • Jan 22 12:48
    nateberkopec commented #2601
  • Jan 22 12:45
    nateberkopec commented #2645
  • Jan 22 06:21
    jesselawson commented #1247
  • Jan 22 00:07
    MSP-Greg commented #2804
  • Jan 21 16:02
    MSP-Greg commented #2804
  • Jan 21 11:54
    voxik commented #2804
  • Jan 20 22:30
    MSP-Greg commented #2804
  • Jan 20 19:31
    MSP-Greg commented #2800
  • Jan 20 19:29
    MSP-Greg commented #2804
  • Jan 20 18:37
    voxik commented #2800
  • Jan 20 18:34
    voxik commented #2800
  • Jan 20 18:10
    voxik closed #2753
  • Jan 20 18:10
    voxik commented #2753
  • Jan 20 16:49
    skcc321 commented #2601
Dominic Tootell
@tootedom_twitter
Hi there. This is going to sound like a completely noob question. We are wishing to use logstash http input. This input starts a puma server for you. Locally (macbook) this puma webserver is processing 8k requests a second. However, as soon as we put this on an AWS linux instance (bigger boxes), the rps is 90 requests a second (c4.8xl even only 90rps). Is there some configuration somewhere, that needs to be changed on a linux server for it to be performant on a linux instance (have noticed the same issue on vagrant centos, and ubuntu vms).
Dominic Tootell
@tootedom_twitter
I should mention that logstash http input is using 2.16.0 of puma
Olle Jonsson
@olleolleolle

Eh, hi! I got interested in adding a low_level_error_handler to my app, as I read about it in Sentry's docs. My app is started using the Rack::Server.new way of saying it. Here's the invocation used.

server = Rack::Server.new(
  config: File.join('..', 'server/config.ru'),
  server: 'puma',

  Port: 22000,
  Silent: true
)

Is there a way to add a low_level_error_handler at this level?

Source: https://docs.sentry.io/clients/ruby/integrations/puma/

Michael Graf
@m-graf
Hey all, If I'm understanding correctly puma has no default timeout, and should only be explicitly set under config/puma.rb if we want to have a shorter timeout than infinity ?
Nate Berkopec
@nateberkopec
@m-graf No, Puma doesn't have the kind of timeout you're looking for. You need the rack-timeout gem.
Cassidy K
@cassidycodes
Hey All, I know it's a long weekend in the US, but hoping I can get a reply here. I have puma in my gemfile, and I'm using Mina (similar to capistrano) to handle deployment. We're keeping 5 releases on the server. Every 6th release, puma fails to restart and says that it can't find the puma executable. When this happens, it's looking for the executable in the most-recently-deleted release. It's like when Puma daemonizes, it links itself to the executable in the releases path, rather than the current path. I've tried this both using an init.d script. I've also set the directory in my config file, to no avail. Any help here would be greatly appreciated.
It's worth noting that this behaviour is new since we upgraded from 2.10.2 to 3.10.0.
Cassidy K
@cassidycodes
Strangely, when I took a closer look at the error when I was restarting the app, it said it couldn't load the puma binary, but it was referencing a releases directory that still existed.
Cassidy K
@cassidycodes
Just to clarify, when I was using init.d to restart the app, it was referencing a directory that still existed. When I was starting the app on my own with pumactl, it would work 5 times then fail on the 6th when the directory had been deleted.
Marco Colli
@collimarco_twitter
Hello! Currently I use HAProxy to load balance 10 servers. Each server has both nginx (as a reverse proxy) and Puma (as application server). I wonder if nginx is required, or if it would be more performant to use Puma directly (behind HAProxy). The reasons why I have nginx are: 1. serve static assets (like css, js, etc.) faster 2. protect Puma from slow clients
Cameron Seebach
@cseebach-lh
@collimarco_twitter I think you'd want to keep nginx for reason 1. Otherwise, your framework will need to handle those. I'm fairly confident that Rails is much slower at this, and plus with Nginx it's a config file change to start gzipping assets or doing other stuff with them if needed. I'm not convinced it offers any benefits for reason 2, but the best way to know for sure is to run your own test with slow clients.
Cameron Seebach
@cseebach-lh
@collimarco_twitter If you're okay with HAProxy helping out with slow clients, there appears to be some configuration you can do there: https://www.haproxy.com/blog/what-is-a-slow-post-attack-and-how-turn-haproxy-into-your-first-line-of-defense/
Cameron Seebach
@cseebach-lh
@evanphx Is there a channel for puma-dev issues? I'm experiencing problems that are almost certainly related to the configuration of my machine and not to puma-dev, so I'm reluctant to file an issue on GitHub
Brian Purgert
@BrianPurgert
Does puma create a seperate process for each request,
Blane Dabney
@raelik
@BrianPurgert No, it has a set number of threads and/or workers that field the requests
Chris
@ipatch

@raelik just curious but what advantage is there to setting the worker # to something other than 0

when I deploy a rails app using cap & puma I have the below line in my deploy.rb

set :puma_workers,    0
Brian Purgert
@BrianPurgert
@raelik
Blane Dabney
@raelik
@ipatch If you're using jRuby, there isn't one, and in fact, you can't.
If you're using MRI, you can better utilize multiple cores, since MRI doesn't have truly native threads
But, since ruby 1.9 (2.0 maybe?), the I/O is handled internally using native threads, so the typical use cases of threads that wait on I/O will tend to run concurrently even with the GIL locking the green threads.
So I don't think on modern ruby versions there's much use for having multiple workers.
I think if you're doing something more CPU intensive in your Rack app, you may want multiple workers.
Chris
@ipatch
@raelik definitely not using jRuby, all my rails apps are currenty using rvm ruby 2.3.1 love song
Blane Dabney
@raelik
@ipatch Right, so long as your rails apps aren't servicing long-running requests, I think just having a single worker with your threads set appropriately is enough.
Chris
@ipatch
@raelik by single worker you mean cap / puma begins its index at 0 and not 1 ?
Blane Dabney
@raelik
But if you start doing odd things (like say... handling persistent websocket requests), you shouldn't need to use the worker model
Technically, in the case of setting workers, 0 and 1 are effectively the same
0 means you're disabling the worker model entirely.
Chris
@ipatch
ohhh, that i didn’t know, thanks for the explanation 👍
Blane Dabney
@raelik
But setting it to 1 means you're only using 1 worker... so you aren't taking advantage of the worker model. But you also aren't actually disabling it entirely.
Chris
@ipatch
interesting, so the worker model works in conjuction with the threading nature of ruby?
Blane Dabney
@raelik
Pretty sure of that anyway. It's been so long since I've used the worker model
The worker model is actually a way to work around the limited threading in MRI
since it spins up multiple processes.
Chris
@ipatch
hmmm, so workers are new system processes spawned by puma?
Blane Dabney
@raelik
But that became less necessary in ruby 1.9
yes.
Chris
@ipatch
ahhh, that makes sense
Blane Dabney
@raelik
jRuby uses native Java threads, so the worker model is actually permanently disabled if you're using jRuby and Puma (which is my typical use case)
Chris
@ipatch
thanks for the explanation i’ll buy you a cup of ☕️ or 🍺 next time your in town.
Blane Dabney
@raelik
:+1:
Johnathon E Wright
@mustmodify
Just FYI, I had an invalid path for the second argument to stdout_redirect and puma was failing silenty. Quitting silently, I guess.
Blane Dabney
@raelik
@mustmodify what puma version?
you should have seen Cannot redirect STDERR to <your invalid path> in the puma error log
Blane Dabney
@raelik
Oh, I think I see what might be the issue there. That exception will get swallowed depending on how you start Puma
Brian Purgert
@BrianPurgert
Starting puma automatically?
I
How do
L
Brian Purgert
@BrianPurgert
**How do I start puma automatically, aka what is the recommended method? Ive just been running puma in a screen session.