I will check fwstart when I get a chance, one of my goofball admins left remote access to the machines locked so I can't get in there now.
I suspect this will not indicate a clear problem, because the problem is not occuring on startup, but after hours of operation. I will give it a shot though when goofball wakes up and answers my email.
Unfortunately none of the troubleshooting tips in that area are relevant to what's happening, thanks for the pointer.
The restart option is enabled. When the channel dies, it no longer appears in either the Show Status window or in the show_channels.fwx page. But foxweb doesn't appear to realize the channel is not there and doesn't attempt to restart the channel. When I do close the channel window manually in Windows, foxweb immediately restarts the channel in question. So the part of foxweb which:
1. Detects that a channel has disappeared/ceased operation
2. Restarts that channel
Works perfectly. But, there is a state which the channel can get in, which the status monitor -does- detect and ceases to show the channel, but which whatever part of Foxweb which is checking for channels in need of restart does not detect. If you are doing future versions of Foxweb, I would suggest you look at the code in the status monitor, see how it is figuring out that a channel is "gone" (which it definitely does succesfully) and modify the code which attempts to detect down channels and restart them to do something similar. I don't know how bad your code base is maintained as far as that goes
To your question about how we detect the channel dead in show_channels.fwx; first I split the table into rows (using an XML parser to pull TD elements out). The channels are always numbered sequentially; if the server is set to four channels, there should be #1, 2, 3, 4. If I find #1, 3, 4 then I know #2 is dead. This definitely works succesfully.
Regarding an upgrade to the latest version of Foxweb:
1. How much would it cost from 2.6?
2. Can you give me a really complete listing of changes I need to check my code for? I have several hundred thousand lines of code in my system. The upgrade from 1.3 to 2.6, there were definitely changes I needed to make. For example, there were new global variables (Foxpro objects) whose names conflicted with variables in some of my code. The upgrade docs for 2.6 didn't mention these, I guess nobody thought that introducing new global variables would constitute a problem which users would need to be aware of ... really though, anything at all which a change would entail, new variables, discontinued old variables or functions, anything which I should be looking out for on the API side. The last upgrade caused some severe problems which, unfortunately, we didn't notice until quite later.
Thanks, again I will get the log to you when I am able to do so
Sent by FoxWeb Support on 09/07/2005 06:30:02 PM:
FoxWeb tries to kill channels that are not responding, as long as you have the Restart Channels option enabled. You can verify this setting by checking the Configuration page of the FoxWeb Control Center, or by right-clicking on the FoxWeb icon in the notification area and making sure that the Restart Channels setting is checked. Normally, when a channel is restarted FoxWeb logs the last script that it served in fwstart.log.
The Troubleshooting/Common Problems topic in the FoxWeb documentation contains some useful information that could help you troubleshoot this problem. The relevant item is the one titled "Hanging channels, or channels that get restarted often".
I also have some additional questions:
There's no simple way for you to restart individual channels through code, but in any case, FoxWeb tries to do just that. The fact that it fails may be an indication that something is locking the channel process and is preventing it from exiting. It may also mean that Restart Channels is not enabled.
Finally, with FoxWeb 3 we introduced some improvements in the way FoxWeb restarts unresponsive channels. If you can't isolate the problem, it would probably be worth trying the evaluation version of FoxWeb 3 to see if it helps.
Sent by Joe Cosby on 09/07/2005 11:34:23 AM:
Operating system : Windows 2000 Server
VFP version : 6.0
Running as a system service? : No
Using run-time DLL? : No
Web server software : IIS
The version of FoxWeb you are using : 2.6
I am not related to the other person posting about problems with channels, I have a similar but somewhat different issue.
In the past, we have always had the problem that a channel will occasionally just 'die'. The channel will disappear from the Foxweb Status Monitor, although the window representing it will remain in the Windows task bar.
There is a page that foxweb produces which shows the channels,
and I have been using this to detect if channels are missing and send an alert message. We then go in and close the window representing the channel in the Windows task bar, doing that causes Foxweb to restart the channel.
When the channel is hung, users get page timeouts. Obviously Foxweb still tries to send web calls there even though the channel is dead and when this happens the user gets a timeout.
The problem we are having now, for the last week or so, is that the rate of channels dying has gone from a few times a month to several times a day and more. This is causing a severe service impact.
This is an extremely difficult problem to debug. There is no way, within a Foxpro program running in Foxweb, to determine what channel is running the program. As far as I know; or is that wrong, is there a way?
If there is I could use that to pin down what is the last thing that ran on that channel before it died, and hopefully that would tell me what is suddenly causing all these failures now.
The other problem is that I can't, as far as I can see, restart a channel from code. I can do it from the GUI, but not from within a Foxpro program. Since I can figure out from within a program whether a channel is down, if I could kill it, causing Foxweb to restart it, then I could drastically reduce the service impact, and also reduce the need for people to jump on dead channels at 3 in the morning.
It's very frustrating that there is so much you can do, but which is not accessible to code. It puts us in the position of having to do it by hand, which obviously is not what you want to be doing with a supposedly automated system ...
Anyway I am wondering primarily if there is a way to identify a channel as above or to kill one. Any other ideas are very welcome also