It has only been one month since our last release, either we are getting good at building and releasing software, or we got lucky. We’ll let you decide. Improvements in this release include:
- Networking Speed – We have improved Monarch’s already impressive HTTP networking stack by greatly improving the number of simultaneous requests we can process per second. This not only improves the Bitmunk website, but all of the PaySwarm peer-to-peer software. Performance results will be published soon.
Network Stack Improvements
After the last release, we mentioned that Monarch is capable of out-performing a basic Apache+PHP setup by a hefty margin. We have spent some time benchmarking the performance differences between the two systems and found limitations in both Apache+PHP and Monarch. The Monarch issues revolved mainly around the use of the
select() operating system call. When the server was required to process more than 1024 requests per second, performance dropped off sharply due to the operating system being unable to allocate more file descriptors for the networking layer. The Monarch code in Linux has been updated to use the less limited
poll() system call and there are plans to move to a more cross-platform event-based networking mechanism in the future.
Google and Yahoo will soon start to modify your search listing by how quickly a browser can load your web pages. There were a number of features that Apache provided, such as setting the Expires header, that we had delayed implementation of for the 3.2.2 production release of the Monarch Server. Unfortunately, this impacted page load time in a negative way because Web browsers couldn’t cache any of the pages served via Monarch and Bitmunk. We have since implemented both the
Expires header and the
Cache-Control header for browser-based caching. The Bitmunk website also now provides most of its pages as publicly cache-able, which means that other Internet-based caching servers and proxies can cache content down-stream from our servers. This makes fetching files from a Monarch server faster because you can get the file from a caching server that is closer to you on the Internet.
There was also a bug that caused all pages served via the Monarch web server to not be compressed. We have re-enabled the gzip compression feature, which can reduce page sizes by 50% or more. Smaller files mean faster downloads which result in a faster browsing experience.
We have been focusing on ensuring a good experience for our customers and making incremental improvements. We will be focusing on simplifying and enhancing the PaySwarm API, doing an experimental implementation of WebID and OpenID, and moving the PaySwarm Standard forward over the next couple of months. Stay tuned, and as always – you can follow what we’re up to by following @manusporny, @payswarm and @bitmunk on Twitter.