Hello,
We have put up an IRC server for a certain game we made which uses IRC for its client list. Our clients connect automatically to a certain channel on our server, and do "WHOIS" every now and then to get the full list of other clients.
When we have over 800 clients in the channel, we start having major problems. The clients dont talk or send anything to the server, except from doing WHOIS.
We must keep all the clients in one channel. We can config the server in any way to support this channel only, since no other users use this server.
When we have over 800 clients in the channel, they start disconnect with "Max SendQ" messages. We have raised the sendq limits in the config file. Are there any other tweaks we can do to support this sort of usage better?
Thanks.
Keep in mind the sole use of this server is to contain as many clients as possible in one single channel and allow them to do WHOIS to get eachother's details.
Max SendQ Disconnects For Large Channel
I believe we are using WHOIS as an automatic part of the SmartIRC4Net C# Library. This library has an automatic channel sync mode which is implemented using a WHOIS command every now and then.
I don't think we want to change this behavior of the library since its pretty much a closed box for us.
We have changed the sendq, but there are still access floods every now and then when the channel is packed with clients. I believe the data the server returns from the WHOIS command is flooding the clients.
Is it possible to limit the rate in which the server sends replies to the clients so they wont be disconnected?
Thanks
I don't think we want to change this behavior of the library since its pretty much a closed box for us.
We have changed the sendq, but there are still access floods every now and then when the channel is packed with clients. I believe the data the server returns from the WHOIS command is flooding the clients.
Is it possible to limit the rate in which the server sends replies to the clients so they wont be disconnected?
Thanks
Nope, you've got two options-- address the library issues, or try upping the sendq more (not the best option -- if you're having sendq issues, you are chewing a LOT of bandwidth).
-ChatSpike IRC Network [http://www.chatspike.net]
-Denora Stats [http://denora.nomadirc.net]
-Omerta [http://www.barafranca.com]
-Denora Stats [http://denora.nomadirc.net]
-Omerta [http://www.barafranca.com]
easier said than done..
the main reason we are using IRC is that we do not own our own machine which can run a session management server, or some other server we could have written for the task
IRC presented a good solution since there are free servers out there, that we can use..
if you can think of a different low-budget (meaning free) solution we would like to hear about it
btw, a web CGI script doesnt work since clients will have to report disconnection, and there are many cases this is simply impossible. IRC is one of the few free services that allow a constant TCP session to be kept, while other clients are notified of its termination
IRC presented a good solution since there are free servers out there, that we can use..
if you can think of a different low-budget (meaning free) solution we would like to hear about it
btw, a web CGI script doesnt work since clients will have to report disconnection, and there are many cases this is simply impossible. IRC is one of the few free services that allow a constant TCP session to be kept, while other clients are notified of its termination
Unfortunately, sendqs are not infinite, and cannot possibly be. Even if you raised the sendq, you'll eventually hit a limit again.
Tell the clients to not use WHOIS. What information do they need from WHOIS they can't get from something else? Example: IP addresses? Easy: /who +c #chanenl , resolve the hostname(s) (or if you want to make it really easy: /who +Ic #channel). Of course either everyone's -x or everyone's +o, so... Away status? Again, /who reveals that (look in the flags part: H == here, G == away). I can't think of anything in whois you can't get from /who lists.
I think it's been mentioned at how well IRC can really be used as a platform for game communication. There should be a thread on it somewhere in Offtopic...
Tell the clients to not use WHOIS. What information do they need from WHOIS they can't get from something else? Example: IP addresses? Easy: /who +c #chanenl , resolve the hostname(s) (or if you want to make it really easy: /who +Ic #channel). Of course either everyone's -x or everyone's +o, so... Away status? Again, /who reveals that (look in the flags part: H == here, G == away). I can't think of anything in whois you can't get from /who lists.
I think it's been mentioned at how well IRC can really be used as a platform for game communication. There should be a thread on it somewhere in Offtopic...
How about a cgi script that is loaded every 60 secs. The IPs that pinged it in the last 120 secs are alive.
IDEA: Hex encode the IPs and use nicks like Game7F000001 (127.0.0.1). Then do /names on the channel, or keep up a list of nicks some other way.
IDEA: Hex encode the IPs and use nicks like Game7F000001 (127.0.0.1). Then do /names on the channel, or keep up a list of nicks some other way.
Why the hell can't my signature be empty?
"Your message contains too few characters."
"Your message contains too few characters."