james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Serge Knystautas" <ser...@lokitech.com>
Subject Re: System Load
Date Mon, 26 Feb 2001 16:27:03 GMT
----- Original Message -----
From: "Joan Carles" <joancarles@indibil.com>

> Correct me if I am wrong, here go some thoughts:
> It is always desirable that a machine does not go over system load =1. If
> this
> happens very often then it is a matter of upgrading or adding more
> The thing is, the server should handle peak times smoothly without the
> of upgrading.
> Sendmail's design is based on forking a process for every request. That's
> why
> it will stop processing mails (and queue them) when the number of requests
> is
> very high and the system load goes over 1, it basically concentrates in
> keeping
> up with requests.
> If James creates a new Thread per request then it should apply the same
> principle.
> All in all, it is a matter of avoiding excesive use of resources (threads,
> sockets,
> cpu etc).
> In the case of RDBMS based queues, processing mail may increase the
> load quite a lot. System load indicates the average number of processes
> in
> the queue waiting for CPU time. In my experience, when load is very high
> system starts to behave differenly and exponential growth of
> threads/sockets/queueing
> is a situation that may bring the server down to its knees.
> What do you think?
>    J. C.

I don't think this is how James works.  James starts by defining X number of
threads that process mail, Y number of threads that deliver mail.  Incoming
SMTP and POP3 requests create/destroy their own threads, but this is
independent of what's being discussed (from what I can tell).  Basically,
you're looking for James not to exponentially grow thread to process mail or
remotely deliver mail, which it does not.  The X and Y threads sleep until
there's something to do, waking up when something is there for them.  I'd
say it would be nice to lower the priority on some of these, but I'm not
sure how feasible that is using Avalon (or rather, what is the best way to
do that)

What restrictions are you looking to put on the thread behavior?  I'd like
to understand this better before coming up with a way to monitor load.

Serge Knystautas
Loki Technologies

View raw message