Recently I discovered a problem with Manifold WMS where if the page wasn’t accessed for a while it would cause the w3wp.exe IIS worker thread to loop. Until I find out the underlying cause I’ve written the map_keepalive.wsf script below to automatically retrieve a web page and scheduled it to run every 5 minutes. I assume something gets spun down and the concurrent WMS requests cause a problem, the map_test.asp page that this script retrieves is just a default IMS page generated from within Manifold.
<package>
<job id="js">
<script language="JScript">
var finished = false;
var timeout = 0;
var timeoutSecs = 30;
var forAppending = 8;
var xmlhttp = WScript.CreateObject("MSXML2.XMLHTTP");
xmlhttp.open("GET", "http://www.satsleuth.com", false);
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4)
finished = true;
}
try {
xmlhttp.Send("");
} catch (e) {
}
while ((!finished) && (timeout < timeoutSecs))
{
timeout++;
WScript.Sleep(1000);
}
var msg = ""
if (!finished)
msg = "Timeout occurred";
else if (xmlhttp.status != 200)
msg = "Error retrieving map_test.asp, error code: " + xmlhttp.status;
if (msg != "") {
var oFSO = WScript.CreateObject("Scripting.FileSystemObject");
var oFile = oFSO.OpenTextFile("map_keepalive.log", forAppending, true);
var dt = new Date();
oFile.WriteLine(dt.toLocaleString() + ": " + msg);
oFile.Close();
}
</script>
</job>
</package>