NeverBlock Ready for the Big Time

eSpace has had NeverBlock enabled on its own Ruby applications for quite some time now and with a great degree of success. But NeverBlock has so much more to offer to the development community; eSpace is now providing a service in which you can get NeverBlock enabled in your very own application.

eSpace's RubyConf Talk

 

A video of eSpace's Yasser Wahba's talk at the 2008 RubyConf is now online and you can watch it right here! Yasser's talk, which was entitled “NeverBlock: Trivial Non-Blocking IO for Ruby”, covered how people can use NeverBlock to transparently gain IO parallelism in Ruby (and Rails) web applications.

Enjoy the presentation!

 

 

 

 

NeverBlock Unleashed

After months of development and meticulous hard work, NeverBlock is finally in production, having been deployed on eSpace's very own MeOwns.com. NeverBlock allows memory usage to decrease by 75%, while capacity for concurrent requests has been effectively doubled. This allows sites that utilize NeverBlock to increase their capacity for handling concurrent requests, while at the same time reducing memory requirements significantly. We also spent some time fixing the subtle MySQL connection issues that happened with long running requests. The result of the work is a more polished and solid NeverBlock that has been running smoothly on MeOwns.com for a while now, which increases our level of confidence in the library and makes us believe that NeverBlock is now ready for prime time.

NeverBlock: Instant Scaling For Your Rails Apps

Today marks a milestone in the short history of NeverBlock. We have pushed a new release with lots of new features, mainly:

  1. NeverBlock now supports Ruby1.8.
  2. NeverBlock support for Thin and Mongrel servers.
  3. NeverBlock now supports Ruby on Rails.

Let's iterate over the above points and explain them in more detail.

NeverBlock Now Supports Ruby 1.8

Utilizing Aman Gupta's Poor Man's Fibers we were able to add Ruby 1.8 support to NeverBlock. Thankfully this does not mean that applications written for NeverBlock now require full thread safety. Aman's implementation makes sure one thread is scheduled at a time. The fibers don't fight for CPU time so the solution is free of race conditions. The performance penalty is not very big and we were able to extract some very good figures during lab testing.

NeverBlock MySQL Support

We are pleased to announce the availability of a MySQL database driver for NeverBlock. This is the second database driver for NeverBlock after the PostgreSQL driver. We hope that with time, this family will grow.

Of course the driver does all that you expect from a decent NeverBlock driver. It can do IO operations concurrently and in a transparent manner, thanks to NeverBlock. An interesting side effect emerged during the development of this driver. We were required to update the current MySQL driver to be able to do async operations. Once those were done, we discovered that the basic foundation for threaded support was there. Hence we went forward and implemented it (with help from Ruby gurus like Aman Gupta and Roger Pack).