Max SendQ Disconnects For Large Channel

These are old archives. They are kept for historic purposes only.
Post Reply
tiktaki
Posts: 3
Joined: Tue Nov 22, 2005 8:53 pm

Max SendQ Disconnects For Large Channel

Post by tiktaki »

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.
Jason
Posts: 570
Joined: Mon Jun 14, 2004 5:09 pm

Post by Jason »

Are you using /WHOIS, on an individual user, or /NAMES, to get a list of people in the channel?

/names is the better option.

Raise the SENDQ in the 'clients' class block.
Why the hell can't my signature be empty?
"Your message contains too few characters."
tiktaki
Posts: 3
Joined: Tue Nov 22, 2005 8:53 pm

Post by tiktaki »

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
w00t
Posts: 1136
Joined: Thu Mar 25, 2004 3:31 am
Location: Nowra, Australia

Post by w00t »

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]
Dukat
Posts: 1083
Joined: Tue Mar 16, 2004 5:44 pm
Location: Switzerland

Post by Dukat »

There's a third option: Use the right tool for the right job.

IRC Servers are designed for chatting. If you need session management, don't use an IRC Server. There are better solutions.
If you don't make mistakes, you aren't really trying.
- Coleman Hawkins
tiktaki
Posts: 3
Joined: Tue Nov 22, 2005 8:53 pm

easier said than done..

Post by tiktaki »

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
aquanight
Official supporter
Posts: 862
Joined: Tue Mar 09, 2004 10:47 pm
Location: Boise, ID

Post by aquanight »

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...
Jason
Posts: 570
Joined: Mon Jun 14, 2004 5:09 pm

Post by Jason »

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.
Why the hell can't my signature be empty?
"Your message contains too few characters."
Suchiara
Posts: 64
Joined: Fri May 20, 2005 2:37 pm

Post by Suchiara »

increase the recvq to 32 000
increase the sendq to 20 000 000


should solve the problem. If still not, then try to u-line the server (don't know if it will help though. btw: dangerous)
Jason
Posts: 570
Joined: Mon Jun 14, 2004 5:09 pm

Post by Jason »

That just flat wont work. You cant uline a user server, and if you uline yourself, im pretty sure its ignored. It wont help with flooding off anyhow.
Why the hell can't my signature be empty?
"Your message contains too few characters."
Post Reply