On Wed, 18 Jun 2003, Gary Richardson wrote:
> To save perl startup time, would it be worth while to add the ability to
> tell mon to fork and eval the application if it is a perl script?
i've thought about this in the past, and here's the idea i have:
have the option of two different types of monitors:
type "a": the existing type which are forked for every invocation. these
are easy to write so they have great utility for quick
site-specific customizations, but can be inefficient if you have
a huge and complicated mon configuration with many hundreds of
services. also, you can write these monitors sloppily and not
worry about memory leaks because their lifetime is very short.
type "b": these are started when the mon server initially starts (or
after a configuration reload or reset). they receive orders
from a connection to a local socket or some form of ipc. the
orders are "test this list of hosts and get me the results",
just like regular monitors, but the invocation and communication
mechanism is different. there is a "master" monitor which
accepts these connections and forks off a child to handle
each request. the child is the same program but a different
function, so no exec is done to load a new program. this is
somewhat similar to how apache handles http requests.
when mon schedules a test for a type "b" monitor, rather than
forking and execing, it simply makes an ipc connection to the
already-running monitor and delivers its orders, and waits for
the results.
this type of monitor is more complicated to write, but it can
scale much better than the fork-and-exec type of monitor. since
these are long-running processes, you need to worry about memory
leaks, but it could be possible to perodically restart these
monitors without causing a noticeable drop in performance. there
will likely be a very few number of these types of monitors.
sound reasonable?
_______________________________________________
mon mailing list
[EMAIL PROTECTED]
http://linux.kernel.org/mailman/listinfo/mon