Most webservers out there are linux. This isn't a problem IMO. --- Mark Wedel < mwedel at sonic.net > wrote: > Brendan Lally wrote: > > >> Right - I'm not sure the cost of doing it web > server based vs independent > >>program. For the number of crossfire servers > we're talking about, probably > >>not a big deal in any case - although with it > being web server based, you > >>do have to be concerned with things like file > locking, which may not scale > >>will with large number of updates happening - this > is mostly because it has > >>to do all updates through a file. A standalone > metaserver has the > >>advantage it only has to do some locking on the > data structures, and only > >>periodically needs to write it out to a few (say > every few minutes for > >>backup purposes). The php one has to read/write > the file every time in > >>gets an update. As said, for the number of > servers we have, may not be a > >>big dea. > > > > > > Yes, I don't know how to get round this, although > at least on a good > > webserver, if the files are accessed enough to > matter, they shouldn't be > > leaving RAM. > > True, but that is harder to predict. The OS will > do the file caching, but if > the webserver is busy enough, the cache hit rate > might be poor. The flip side > is that if the metaserver is used a lot, more likely > that the file will be > cached, and thus performance improves. > > But how the OS caches varies OS to OS. Linux is > very aggressive on caching > data, others less so. > > OTOH, if the core metaserver can be run as a non > web program, I think there > are still benefits from doing that. It's a little > more work to write such a > program, but probably not much. > > Related to this, how do the slave metaservers do > updates? They can obviously > only do anything when someone is requesting data > from them. Do they look at > their local cache modification time, and if it > hasn't been updated in X minutes, > go talk to the core metaserver to get up to date > information? > > > > > >> In my ideal world, the metaservers should be > able to provide information > >>in both 'pretty' html and something raw. One > could envision this by > >>something like: > >> > >> http://myhost/metaserver.php > >> giving nice html output, and something like: > >> > >> http://myhost/metaserver.php?output=raw > >> > > > > > > or indeed, showservers.php and > showserversclient.php, which were two of the > > first things that I wrote when I started to play > with this. (since a > > webbrowser is easier to play with than some > quickly crufted C code.) > > > > I haven't done file locking there because I am yet > to get round to it. > > > > You could have a get call and merge the two I > guess. > > Probably not a big difference for them to be one > program. Two seperate > scripts work just fine. > > > >>>watchdog when it is compiled in has the server > send UDP packets to a > >>>local socket. AFAICT it doesn't really matter to > much /what/ it sends, so > >>>it might as well send the data that the > metaserver will use, in that case > >>>then the program you describe would end up > looking similar to > >>>crossfire/utils/crossfire-loop.c (though maybe in > perl?) > >> > >> IMO, the metaserver notification helper has to > be started automatically > >>by the server, and not be an external entity > started via script (like the > >>watchdog one uses). This is simply easy of use - > otherwise the problem is > >>that someone starts it by hand, or uses their own > monitoring script and > >>don't send metaserver updates when they should. > > > > > > True, but a fork and exec at startup can do that. > > Right, but that then isn't really the watchdog > program. > > > >> Also, it is probably nice for the metaserver > updater to be connected via > >>tcp or pipe to the server, so each can know when > the other dies. If the > >>helper sees the server dies, it can send a last > update to the metaserver > >>informing it that the server just died, and then > exit. If the server sees > >>the helper dies for any reason, it can start up > another copy. The problem > >>with the udp notification and watchdog is that the > watchdog could be dead > >>and server would never know. > > > > > > This is true, although to a certain extent the > idea is that the watchdog is > > simple enough to not die. > > Famous last words. But there are of course other > possiblities beyond the > watchdog having faults. Someone accidentally kills > it. Something external to > it causes it to fail (out of memory, disk error, > whatever). And right now, if > the watchdog does die, not a big deal - server > continues to run, no one notices > anything different. However, if the metaserver > helper dies and is not noticed, > then the server in question is no longer reported, > which does cause problems > > I'd personally like things to be simpler - if a > user can just run the main > server, and everything works, that is much better > them then having to restart > the helper manually. > > > > > > >> The helper program also needs to have some basic > security - making sure > >>the connection is coming from the local host and > not something remote > >>(don't want some remote host connecting to the > helper and forging > >>information). > > > > > > Is it insecure at the moment? It /is/ already in > the server code, this was why > > I suggested using it, if it is there presumably it > at least works in some > > fashion (although this has been shown to be false > in the past). > > Right now, it appears insecure, in that a udp > packet to port 13325 resets the > watchdog timeout. The code does not appear to do > any validation that the packet > in fact came from the local host. > > the other problem is that it does use udp. While > spoofing IP here probably > isn't much a concern, it does mean that it is now > very difficult for the server > to know if that packet has been received, and thus > if the helper is still alive. > > The other gotcha is that the main purpose of the > watchdog program is to > restart the server if it dies or is not responsive. > > The main perhaps of the metaserver helper program > is to send data to the > metaserver. I can envision cases where this helper > could basically freeze up > resolving IP addresses and trying to connect to them > - in this case, this helper > really can't be doing anything else, such as > restarting the server if it > crashes. IMO, much better for this to be a > standalone === message truncated === __________________________________ Do you Yahoo!? Yahoo! Mail - You care about security. So do we. http://promotions.yahoo.com/new_mail