librelist archives

« back to archive

raindrops/last_data_recv

raindrops/last_data_recv

From:
Troex Nevelin
Date:
2011-03-25 @ 11:22
I've setup raindrops/last_data_recv with unicorn and rails:

I'm able to access /_raindrops and /raindrops/last_data_recv.
The last one shows some aggregated data like Watcher, but what
exactly?

As I understand it is possible to implement Watcher
functionality inside my App or in Raindrops middleware. If it is
true than I'll not need Watcher to monitor my unicorns and I'll
be able to collect the same data from middleware itself.

Are my decisions correct?

Re: [raindrops] raindrops/last_data_recv

From:
Eric Wong
Date:
2011-03-25 @ 16:57
Troex Nevelin <list@mrtech.ru> wrote:
> I've setup raindrops/last_data_recv with unicorn and rails:
> 
> I'm able to access /_raindrops and /raindrops/last_data_recv.
> The last one shows some aggregated data like Watcher, but what
> exactly?

last_data_recv only works for TCP, but can be more accurate than
watcher.  watcher snapshots the queue length at a predefined interval
(1s by default).  This means data can slip through the cracks between
intervals with watcher.

last_data_recv measures the actual time a client spent in the TCP queue
(rounded to the nearest 10ms[1]) before it was accept()-ed

In my experience, Watcher is much easier to setup and use.

I need to stick that in the rdoc/website somewhere...

> As I understand it is possible to implement Watcher
> functionality inside my App or in Raindrops middleware. If it is
> true than I'll not need Watcher to monitor my unicorns and I'll
> be able to collect the same data from middleware itself.

Yes, but Watcher needs to be run in a single-process (but
multi-threaded) for data sharing.  Reading tcp_diag or /proc/net/unix
can be expensive, so you really don't want multiple processes
aggregating the same data.

[1] - depends on the kernel timer resolution, I think, need to verify.

-- 
Eric Wong