2015-06-23 16 views

risposta

11

Forse

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

in un altro terminale

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

risultati in:

--- 
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 

Ma che sembra statico :(

partire la vostra applicazione tramite puma in questo modo:

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

consente poi di interrogare secondo il vostro browser web:

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

Con conseguente :

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

che sembra più dinamica ...

Edit_0:

Come lavoratori sono processi, si potrebbe anche strumenti di leva forniti dal sistema operativo per raccogliere informazioni, per esempio su Linux:

Avvio di un'istanza puma:

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 

Utilizzando superiore per indagare lavoratori:

$ top -p1921 -p1929 -p1937 -n 1 

ci dà

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 

da cui si può analizzare le informazioni rilevanti come Utilizzo della CPU o della RAM.

+0

thx @benjamin ma dov'è documentato il parametro '-S'? – Tal

+0

@Tal, in puma versione 2.15.3 una chiamata a "puma --help" mostra una breve documentazione. Aggiornerò la mia risposta per mostrarti il ​​contenuto ... – benjamin

+0

thx @benjamin, ma sfortunatamente sembra che questo non fornisca le informazioni chiave che sto cercando, che è lo stato degli operai (occupato/inattivo) – Tal

0

È possibile utilizzare lo strumento pumactl:

$ pumactl --help 
+1

thx Yuri, ma questo non mi consente di monitorare il numero di worker/thread, che è ciò che è richiesto. mi sto perdendo qualcosa? – Tal

2

Io uso il dio o monit.

God è un gioiello rubino, Monit è uno strumento di monitoraggio

  • server monitor,
  • processi,
  • inviare notifiche per l'utilizzo delle risorse,
  • riavviare i processi, se si è schiantato,
  • fornire terminale e web ui per verificare lo stato dei processi.
Problemi correlati