« March 2009 | April 2009 Archives | May 2009 »

Upgrading to version 6.0

I'm in the process of upgrading a set of ISO8583 servers for a client. One of these is the original server that caused The Server Framework to come into existence back in 2002. The other two servers are based on a 2005 cut of the code; one written in 2005 and one, heavily based on the other, written in 2008. The upgrade is primarily to support windows performance counters on Windows Server 2008 and to allow for x64 builds. These features have been available in The Server Framework for some time but if your systems work (and have been through complex and time consuming…

Custom application servers

A lot of the custom development work that we do for our customers can be classified as developing 'custom application servers'. Development for these kinds of servers usually requires that we design a wire-protocol for communications between the clients and the server, implement a server that either does everything that the customer requires or allows them to easily plug in their business logic and provide a client side library (or two) that makes it easy for the customer to write clients for the server. The Server Framework makes this kind of thing reasonably straight forward; after all, it's what it was designed…

Bug fix for the free server framework code

| 1 Comment
A user of my free server framework code has reported an error and supplied a fix. The problem is that he's been having connections closing and returning ERROR_CONNECTION_ABORTED and the free code doesn't handle this situation very well and this was causing his I/O threads to terminate and leaving him with an unresponsive server. Interestingly I've never had this problem reported before and haven't been able to duplicate the issue but I thought it would be useful to publish the fix in case anyone else comes across the problem. His suggested fix is to change the code in CSocketServer::WorkerThread::Run() from…

Interesting piece on thread pools

Herb Sutter has just published an interesting article over at DDJ on correctly using thread pools: Use Thread Pools Correctly: Keep Tasks Short and Nonblocking. It's not rocket science and it doesn't deal with platform issues but it's a useful summary of why The Server Framework's thread pools operate as they do. Note that on Windows you can use IO Completion Ports to manage the work queue into the thread pool and this can keep the number of threads that are scheduled to run at the optimum number so that the pool operates at the 'correct load' for most of the time…
I'm in the process of upgrading another client to v6.0. These guys write multi-user game systems and have a fairly complex CLR hosting custom application server. Anyway, I was hoping that we'd have a few easy performance wins from the changes that have gone into v6.0 and these gaming guys are possibly even more hung up on performance than my banking and trading clients. The good news is that the changes in how we convert numbers to strings has drastically improved performance in their debug builds where they have lots of logging going on. The bad news is that performing…
« March 2009 | April 2009 Archives | May 2009 »

About this Archive

This page is an archive of entries from April 2009 listed from newest to oldest.

March 2009 is the previous archive.

May 2009 is the next archive.

I usually write about C++ development on Windows platforms, but I often ramble on about other less technical stuff...

Find recent content on the main index or look in the archives to find all content.

I have other blogs...

Subscribe to feed The Server Framework - high performance server development
Subscribe to feed Lock Explorer - deadlock detection and multi-threaded performance tools
Subscribe to feed l'Hexapod - embedded electronics and robotics