Last night, I ran a stress test on QuickServ.NET. I had 1100 users connected in and randomly had 200 of them joining and parting channels every 30-45 seconds for about 7-8 hours. I have to say that I’m pretty glad about the results (except for a bug that occurred in my stress test application about 7 hours into the test).
Of course this only tests one aspect of the application. I’ll be taking the results from that test and modifying some code to tweak performance but overall it seemed to have been a success. In the next few days I’ll have my stress test program actually be fully functional so that I can simulate a busy IRC network to see how QuickServ.NET performs (quits, server joins, channel joins, channel parts, topic changes, mode changes, etc).
Here is a quick development update on QuickServ.NET.
The main code that handles the server protocol is nearly completed. QuickServ.NET can successfully connect to an IRC server, and populate the internal database with the user information and channels information (including modes, ops, voice, regular members, topic, etc). While some fine tuning is still required, I’m happy that I can start moving on to the actual services.
One of the biggest obstacles when coding/test is that I don’t have access to an IRC network that has a userbase, established channels, and traffic. In an effort to “counter” that, I’ve also created a “server simulator” that I’ve been using to stress-test QuickServ.NET with positive results.
Anyway, since all services revolve around NickServ (well, sort of), I’ve started my work on that. I’ll keep everyone (currently, that means no one) up-to-date on how that is going (so far, I have the barebones of a REGISTER command and an IDENT command).
Just a quick development note.
QuickServ.NET will use SQLite as the database backend. I started using MS SQL 2005, but then realized that I didn’t want to make people download the large MS SQL 2005 install file and go through all that.
SQLite is small, quick, self-contained, requires no configuration, and doesn’t require a server.