[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Multiple processes started when explicit start commands areused on d
Re: Multiple processes started when explicit start commands areused on dependant processes.
Tue, 7 Feb 2006 22:17:43 +0100
On 7. feb. 2006, at 19.43, Philipp Berndt wrote:
On Thursday 02 February 2006 15:05, Jan-Henrik Haukeland wrote:
On 30. jan. 2006, at 20.14, P Holdaway wrote:
Conceptually, does the code make an effort to block other start/
process commands while the start/stop of a dependency tree is
For start it does not wait, for stop it waits. You can examine
control.c to see how this is handled.
What sense does it make to run several start scripts concurrently?
Not concurrently but sequential, that is, sequential forks :) But I
agree, it would be much better for monit to wait on each process it
starts in a depend tree.
Note that checking for the process id is *NOT* enough, because the
have to initialize (spawn other processes, claim resources etc.).
This is exactly the problem, waiting for a process or pid file to be
written is not enough, since this is typically done at the start and
before other initializing tasks. So what should we wait for? If you
have a good _general_ suggestion I'm all ears.
If it's a socket based server, such as apache or mysql, we could wait
for it to pass a connection w/protocol test. That should work since
we then now it is initialized and the processing machinery works.
However this is not the case for many servers started by monit and
hence not general.
Only after the start script has terminated you can be sure the
ready and may be used by dependant services.
Nope, if the start script calls 'exec' it will never return or if it
just does a fork ala 'program&' we are still back to the problem
situation described above.
Besides, even running non-dependant start-scripts in parallel
complicates things, muddles logging
For monit's part, logging is synchronized and so is the code. The
problem is to find a good condition for saying that a server is up
and running. Preferably a condition that can be expressed in C. The
"best" we can do is probably to wait for a pid file to be written
after all, and monit should check for the existence of a process pid
file before it starts the next process in a dependency graph. Patch
is welcome :)
Mobil +47 97141255