Current working features include:
- Event-driven, async I/O similar to Node.js (libuv) and IIS 7.5 for high performance and concurrency.
- Uses kernel-level I/O completion ports for async callback completions, and managed threadpool threads for async processing.
- Decent error handling and low failure rates (zero so far) during high congestion/concurrency.
- Output caching — frequently used resources are stored and served from an in-memory cache, greatly reducing number of I/O calls.
- Server is configurable with an XML file, allowing plain-text configuration of mimetypes, default documents, keep-alive (max requests/timeout), custom handlers aka interops (php, etc), compression (gzip/deflate), response headers, virtual hosts, etc.
- A client app is included for running benchmarks and observing the request/response cycle for any web server. Tested to work with IIS 7.5, Node.js, Apache, nginx and Rapid Server.
Based on research and concepts from my .NET Sockets project, this is the next evolution of it.
Microsoft Windows, .NET Framework:
- Type1.Server requires .NET 2.0 (implements EAP / APM / IAsyncResult / Socket.BeginXXX Socket.EndXXX)
- Type2.Server requires .NET 3.5 (implements EAP / APM / SocketAsyncEventArgs / Shared Buffer / Socket.BeginXXX Socket.EndXXX)
- Type3.Server required .NET 4.0 (implements TPL / Tasks / ContinueWith)
Future milestones include:
Status update November 23: Decided to take a CPU profile with SlimTune and see what could be optimized.
This shows that one of the slowest operations during our entire handling of a request is when calling IO.File.Exists to check if a file exists on the hard drive. This is done to locate the default document. It’s not a slow operation under normal conditions, but calling IO.File.
A noticeable improvement! That’s an extra 500 to 2000 requests per second without IO.File.Exists. This brings Rapid Server very close to IIS 7.5 in terms of performance. In reality, we cannot eliminate IO.File.Exists because it is used to locate the default document, but we certainly don’t need to do this on every request.
The result can be cached, or it can be skipped when we already have a cached response, which is probably how this optimization will be finalized. In case you’re wondering what the «S» means in the legend, it’s short for static, these benchmarks were done against a static web page.
Status update November 22: Further demonstrating the Benchmark feature in Rapid Web Client. Similar graphs will be used for displaying server performance. Let’s have a look at how Rapid Server, Apache, NGINX, IIS and node.js compare using ApacheBench. These servers are event-driven asynchronous I/O, with the exception of Apache which is synchronous.
Steam community :: group :: rapid gaming: the new rotation
Server rules: http://steamcommunity.com/groups/RapidsPlayhouse/discussions/0/350544200756838754/
Server Details: http://steamcommunity.com/groups/RapidsPlayhouse/discussions/0/350542050095244774/
Map Rotation: http://steamcommunity.com/groups/RapidsPlayhouse/discussions/0/350544200756917457/
Website: http://rapidgaming.clanservers.com (Still to be done)
Welcome all to my Modded Rotation Server!
I am proud to annouce our server is near completion. It is in the final stages of having all the mods installed and configured.
The server is currently playable and open for testing. The server should always have a Mod or Admin online to keep the server hacker free!
Any feedback please let RaPiD know 🙂
— War mode:This will be a plugin that requires to be enabled by an admin. Once enabled other plugins will be disabled and will switch to a pug style server.
— Full rotation: Standard mode with !store and map rotation.
— !store or !shop: A kick ass store with hats, glasses, laser sights, tons of chat colors and tags.
— Credit system: 1 credit per minute and 1 per kill. Credits allow you to purchase goodies from the store.
— Warm up rounds: Usual warm up round stuff.
— Rankme/Stats: Rank, Top weapon, top, !statsme. Ranking system.
— AFK Manager: Sets players to spectator after 360 seconds AFK.
— AFK drop bomb: If bomber is AFK for a short time, they will be forced to drop the bomb.
— Anti Flood: Stops people spamming chat.
— Chat Colors: Lots and lots of chat colors to allow customisation of name tags and messages.
— Fun modes: Knife only, pistol only etc. (Can only be triggered by an admin)
— Votes: Votes for admins to trigger fun rounds such as scout only, deagle only etc.
— Mapvotes: Admins can select multiple maps and trigger votes to change the current map.
— Half Time Switch: Teams will switch sides at the 12:30 minute mark. This allows players to play both T and CT on maps.
— Knife mugger: Steal 50% of your opponents cash if you manage to stick your blade into them!
— Nextmap, RTV and !nominate: usual stuff you find on most servers.
— Weapon restrict: Admins can restrict weapons by groups or weapons.
— Thirdperson mode: Type sm_tp to switch to third person mode. This allows you to check out ur hat etc
Commands available to all:
votemute — players on the server vote to mute a person
votekick — players on the server vote to kick a person