[mapguide-users] RE: Studio Enterprise and Web Studio Cannot Connect Randomly
Jason Birch
Jason.Birch at nanaimo.ca
Thu Nov 16 22:18:00 EST 2006
Yes, setting StartServers = 4, MaxServers = 4 seems to have at least reduced considerably (I haven't seen one yet) the connection errors. At least, unless I do something stupid like killing a mapagent.exe process manually...
I just went back to my server after a couple hours of quiet time, and all of the MapAgent processes had died off and I had a pop-up error message about the IIS worker process being killed. In the event log there's a message "Reporting queued error: faulting application w3wp.exe, version 6.0.3790.1830, faulting module isapi_fcgi.dll, version 0.0.0.0, fault address 0x000042c0."
This doesn't seem to have had an effect on the application though; I didn't get an FCGI connection error when loading my test page.
Jason
________________________________
From: Trevor Wekel [mailto:trevor.wekel at autodesk.com]
Sent: Thu 2006-11-16 4:31 PM
To: Jason Birch; users at mapguide.osgeo.org
Subject: RE: [mapguide-users] RE: Studio Enterprise and Web Studio Cannot Connect Randomly
Hi Jason,
Does setting StartServers = MaxServers eliminate the connection errors?
Here's some more background on the IIS FastCGI extension. Isapi_fcgi.dll does recycle the processes. Memory leaks will accumulate for a while but resource consuming php-cgi.exe and mapagent.exe processes should drop off after a while. The only catch is that isapi_fcgi gives no control over how long the processes should stay alive. For PHP, setting the following environment variables may help roll the processes a little quicker:
PHP_FCGI_MAX_REQUESTS=500
PHP_FCGI_CHILDREN=1
These can be set by adding a registry setting under FASTCGI/.php
Environment REG_BINARY (0x0D delimited set of environment variables, terminated with 0x00)
eg. PHP_FCGI_MAX_REQUESTS=500 0x0D PHP_FCGI_CHILDREN=1 0x0D 0x00
Thanks,
Trevor
________________________________
From: Jason Birch [mailto:Jason.Birch at nanaimo.ca]
Sent: Thursday, November 16, 2006 5:12 PM
To: users at mapguide.osgeo.org
Cc: Trevor Wekel
Subject: RE: [mapguide-users] RE: Studio Enterprise and Web Studio Cannot Connect Randomly
For anyone who's keeping track...
Setting the StartServers to a higher number did not seem to help me.
What has seemed to help was setting the StartServers and MaxServers to the same number. I guess this is OK if you're not worried about memory leaks or dynamic resource allocation on your server.
It looks to me like any time a MapAgent child process is killed on Windows, the FastCGI ISAPI handler doesn't get informed about it, and the first request fails. If you restart IIS after killing a process, you don't get the error; a new process is just started up.
Jason
________________________________
From: Jason Birch [mailto:Jason.Birch at nanaimo.ca]
Sent: Wednesday, November 15, 2006 12:41
To: users at mapguide.osgeo.org
Cc: Trevor Wekel
Subject: RE: [mapguide-users] RE: Studio Enterprise and Web Studio Cannot Connect Randomly
Thanks, I'll give that a try.
Apparently these can be set on a per-service level, under
HKEY_LOCAL_MACHINE\SOFTWARE\FASTCGI\.fcgi
And there is an "Environment" setting. Maybe this could be used to overcome the problem with the PROJ_LIB variable not getting picked up?
http://viewcvs.php.net/viewvc.cgi/fastcgi-isapi/readme.txt?view=markup
Jason
________________________________
From: Trevor Wekel
Subject: RE: [mapguide-users] RE: Studio Enterprise and Web Studio Cannot Connect Randomly
Hi Jason,
Telling isapi_fcgi and mod_fastcgi to spin up two servers might help but I've had trouble forcing them to spin up agents. mod_fastcgi is especially obstinate. Even under load it doesn't like to spin up more than one agent. Here are the appropriate settings:
For IIS:
Increase the registry setting HKEY_LOCAL_MACHINE\SOFTWARE\FASTCGI
StartServers REG_DWORD 1
For Apache, modify httpd.conf and increase -minProcesses:
Change
FastCgiConfig -idle-timeout 120 -minProcesses 1 -maxClassProcesses 4 -multiThreshold 100 -singleThreshold 100 -killInterval 600
to
FastCgiConfig -idle-timeout 120 -minProcesses 2 -maxClassProcesses 4 -multiThreshold 100 -singleThreshold 100 -killInterval 600
Note: PHP uses a different configuration line and should already be spinning up 4 processes:
FastCgiServer "C:/Program Files/MapGuideOpenSource/WebServerExtensions/php/php-cgi.exe" -processes 4 -idle-timeout 120 -
initial-env PHP_FCGI_MAX_REQUESTS=500 -initial-env PHP_FCGI_CHILDREN=1^M
More information about the Mapguide-users
mailing list