I recently installed Webware 1.1b on a new machine, and left it at its
default Min/Start/MaxServerThreads (5/10/20) in
webwarework/Configs/AppServer.config. I have observed that even when
MinServerThreads are all busy, Webware is not starting new threads to
handle new connections. Looking at the code, this seems to be because
Webware decides how many threads it needs based on past activity; all
threads being busy does not in itself trigger the creation of new
threads. (I could be misunderstanding the code here.)
I observed it using a simple Webware script that reports the number of
active threads and roughly what they are doing. This script is normally
very fast because it waits on no locks and does no database work.
However when the server is busy I have occasionally noticed a several
second delay before it returns, and when it does return I see that the
other threads are all busy, and that the number of threads is still just
5. In fact, the number of threads is /always/ just 5, so far as I can see.
Perhaps it is just that my requests come in a bad pattern: I observe
that most of the Webware threads are idle most of the time, but
occasionally a bunch of requests will come in together, and slow each
other down trying to update the same table. As they wait, others pile
in until the database clears the backlog and everyone is finished.
I have fixed my problem by upping MinServerThreads to 20. I also
noticed that I had MinServerThreads set to 100 on my old machine
(Webware 0.8.1 or thereabouts), courtesy of an incident a few years ago
when some of my threads were locking up, so I suspect what I am
observing is not new.
So my question is: is this behaviour normal? Am I handling this the