Bitmunk 3.2.3: Speed Improvements

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.
  • Website Responsiveness – A number of changes have been made to reduce page load times. We have focused on Javascript minimization, resource caching and compression.

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.

Website Responsiveness

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.

Javascript is used by Web browsers to make web pages more interactive and dynamic. At times, your Web browser must download a great deal of Javascript in order to completely load a page. One way of reducing the load-time for Javascript is to use Expires and Cache-Control headers so your browser doesn’t have to repeatedly download the files. Another way is to get rid of all of the unnecessary space and comments in the Javascript code so the initial download time is reduced. All production Javascript code for Bitmunk and PaySwarm is now minimized using the Yahoo YUI Compressor.

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.

What’s next?

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.


We're not around right now. But you can send us an email and we'll get back to you, asap.


© 2022 Digital Bazaar, Inc. All rights reserved.

Log in with your credentials

Forgot your details?