Stas Bekman wrote:

>Bill Stoddard wrote:
>  
>
>>William A. Rowe, Jr. wrote:
>>
>>    
>>
>>>How interesting!  thanks for the discovery... FirstBill actually 
>>>created the
>>>connection threadpool for mpm_winnt, iirc, so i'll punt to him or tackle
>>>next week.  
>>>At 11:50 AM 3/9/2004, Stas Bekman wrote:
>>>
>>>      
>>>
>>>>Steve Hay wrote:
>>>>
>>>>        
>>>>
>>>>>Steve Hay wrote:
>>>>>
>>>>>
>>>>>          
>>>>>
>>>>>>I'll try chopping some of the new (post _12) tests out to see if I 
>>>>>>can get it working again.
>>>>>>            
>>>>>>
>>>>>If I remove:
>>>>>  t/htdocs/vhost/startup.pl
>>>>>  t/response/TestVhost/config.pm
>>>>>  t/vhost/config.t
>>>>>then run "t/TEST -conf" and then try "nmake test" again, then it's 
>>>>>all OK with 20 threads.
>>>>>          
>>>>>
>>>>Would it make any difference if you remove some other vhost, and not 
>>>>this specific one? e.g. one of the perlloadmodule\d.pm vhosts?
>>>>
For the record (although I think we realise by now what the problem is): 
removing a different vhost & Listen directive (I tried perlloadmodule3) 
also "fixes it" -- i.e. one less thread is required.

>>>>
>>>>
>>>>        
>>>>
>>>>>Increasing ThreadsPerChild to 50 was overkill, though -- it actually 
>>>>>works fine (with the vhost tests back in) with just 21 threads.  
>>>>>Looks like the new vhost tests need 1 extra thread.
>>>>>          
>>>>>
>>>>Perfect, Steve. We have 20 vhosts and 1 main server => 21. So I 
>>>>suppose we need to change A-T to figure out how many vhosts it's 
>>>>going to run and configure that number of threads plus a few more 
>>>>(let's say 5-10 more).
>>>>
>>>>Bill, can you please explain why each vhost requires a thread with 
>>>>winnt mpm?
>>>>Is this documented somewhere? Thanks!
>>>>        
>>>>
>>Each vhost does not require a thread. Each Listen directive requires a 
>>thread to accept connections off the network. We have a bug in the mpm 
>>that causes the "Consider raising the ThreadsPerChild" messaage to be 
>>issued in odd conditions as you observe. I;ll work on a fix for that 
>>problem.
>>    
>>
>
>But what Steve and Randy report is that the server hangs if you have 21 vhosts 
>(and 21 Listen directives) but less threads, regardless the message.
>
FirstBill made two statements there, if I'm reading it correctly - (1) 
each Listen requires a thread; (2) a bug in the mpm sometimes causes 
bogus warnings to be issued.

We have surely fallen foul of the first statement -- we have 21 Listen 
directives but only 20 threads, so in our case the warning is not bogus.

I assume the server "hangs" when the 21st Listen directive finds that 
there are no more threads and sits there waiting for one to be made 
available.  (The WaitForSingleObject() call in 
server/mpm/winnt/child.c's mpm_get_completion_context().)

Removing whatever bogus warnings there might be sounds great, but I've 
never actually seen a bogus warning myself so it wouldn't help us here.

The solution is therefore for A::T to get clever and figure out how many 
*Listen directives* there will be and set ThreadsPerChild to that...

- Steve



------------------------------------------------
Radan Computational Ltd.

The information contained in this message and any files transmitted with it are 
confidential and intended for the addressee(s) only.  If you have received this 
message in error or there are any problems, please notify the sender immediately.  The 
unauthorized use, disclosure, copying or alteration of this message is strictly 
forbidden.  Note that any views or opinions presented in this email are solely those 
of the author and do not necessarily represent those of Radan Computational Ltd.  The 
recipient(s) of this message should check it and any attached files for viruses: Radan 
Computational will accept no liability for any damage caused by any virus transmitted 
by this email.


-- 
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html

Reply via email to