Как контролировать сервер puma?

Есть ли способ отслеживать состояние сервера puma? в частности, сколько у него занятых рабочих и сколько потоков подготовлено каждым рабочим. лучше всего было бы что-то похожее на mod_status apache


person Tal    schedule 23.06.2015    source источник


Ответы (3)


Возможно

$ touch /path/to/your/stats.txt
$ puma -S /path/to/your/stats.txt

в другом терминале

$ watch cat /path/to/your/stats.txt

Результат:

---
pid: 14364
config: !ruby/object:Puma::Configuration
  cli_options: 
  conf: 
  options:
    :min_threads: 0
    :max_threads: 16
    :quiet: false
    :debug: false
    :binds:
    - tcp://0.0.0.0:9292
    :workers: 0
    :daemon: false
    :mode: :http
    :before_fork: []
    :worker_timeout: 60
    :worker_boot_timeout: 60
    :worker_shutdown_timeout: 30
    :state: /path/to/your/stats.txt
    :config_file: 
    :control_auth_token: 21c9241912a8e0e7ddaabac667ff5682
    :tag: solar
    :environment: development

Но это выглядит статично :(

Запуск вашего приложения через puma следующим образом:

$ puma -S /path/to/your/stats.txt -C config/puma.rb --control tcp://0.0.0.0:9191 --control-token foo config.ru

позволяет позже запрашивать в вашем веб-браузере:

$ http://localhost:9191/stats?token=foo
or
$ pumactl -C tcp://0.0.0.0:9191 -T foo stats

В результате чего:

{ "workers": 3, "phase": 0, "booted_workers": 3 }

Что выглядит более динамично...

Изменить_0:

Поскольку рабочие процессы являются процессами, можно также использовать инструменты, предоставляемые операционной системой, для сбора информации, например. в Linux:

Запуск экземпляра пумы:

puma -S p/stats.txt -C config/puma.rb --control tcp://0.0.0.0:9191 --control-token foo config.ru 
[1908] Puma starting in cluster mode...
[1908] * Version 2.15.3 (ruby 2.1.5-p273), codename: Autumn Arbor Airbrush
[1908] * Min threads: 8, max threads: 32
[1908] * Environment: development
[1908] * Process workers: 3
[1908] * Preloading application
[1908] * Listening on tcp://0.0.0.0:9292
[1908] Use Ctrl-C to stop
[1908] * Starting control server on tcp://0.0.0.0:9191
[1908] - Worker 0 (pid: 1921) booted, phase: 0
[1908] - Worker 1 (pid: 1929) booted, phase: 0
[1908] - Worker 2 (pid: 1937) booted, phase: 0

Использование top для исследования воркеров:

$ top -p1921 -p1929 -p1937 -n 1

дает нам

Tasks:   3 total,   0 running,   3 sleeping,   0 stopped,   0 zombie
%Cpu(s):  8.4 us,  1.5 sy,  0.0 ni, 88.9 id,  1.2 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   4058820 total,  1626576 used,  2432244 free,    56456 buffers
KiB Swap:  9609212 total,        0 used,  9609212 free.   424948 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
 1921 benjamin  20   0 1171600  85484   3116 S   0.0  2.1   0:00.38 puma        
 1929 benjamin  20   0 1171600  85264   2884 S   0.0  2.1   0:00.37 puma        
 1937 benjamin  20   0 1171600  85264   2884 S   0.0  2.1   0:00.42 puma

из которого можно извлечь соответствующую информацию, такую ​​​​как использование ЦП или ОЗУ.

person benjamin    schedule 12.12.2015
comment
@Tal, в версии puma 2.15.3 вызов puma --help показывает краткую документацию. Я обновлю свой ответ, чтобы показать вам содержание... - person benjamin; 13.12.2015
comment
спасибо @benjamin, но, к сожалению, кажется, что это не дает ключевой информации, которую я ищу, а именно о состоянии рабочих (занят/бездействует) - person Tal; 13.12.2015
comment
@Tal, я обновил ответ, новая часть начинается с Edit_0. Но, может быть, вам подойдет github.com/hired/puma-stats-logger? - person benjamin; 14.12.2015
comment
спасибо @benjamin, верно. это (наконец-то!) покажет количество потоков puma вместе с информацией о том, какие из них активны, а какие простаивают. спасибо! только хотелось бы, чтобы был способ узнать, какой URL-адрес они в настоящее время обрабатывают (например, mod_status apache) - person Tal; 14.12.2015
comment
Обратите внимание, что вы также можете получить использование потока из статистики в версии 3.7.1 puma. github.com/puma/puma/pull/891 - person lingceng; 11.02.2018

Я пользуюсь богом или монитом.

Бог — рубиновый драгоценный камень, Monit – инструмент мониторинга

  • серверы мониторинга,
  • процессы,
  • отправлять уведомления об использовании ресурсов,
  • перезапустите процессы в случае сбоя,
  • предоставить терминал и веб-интерфейс для проверки состояния процессов.
person peel3r    schedule 18.12.2015

Вы можете использовать инструмент pumactl:

$ pumactl --help
person Yury Lebedev    schedule 23.06.2015
comment
спасибо, Юрий, но это не позволяет мне отслеживать количество рабочих/потоков, что и требуется. я что-то упускаю? - person Tal; 24.06.2015