[ANN] beanstalkd 0.5

Keith Rarick kr.philotic at gmail.com
Tue Dec 11 21:51:35 UTC 2007


I'm happy to announce the release of beanstalkd 0.5.

This is the very first public release. In the future I'll confine
release announcements to the beanstalk mailing list.


WHAT IS BEANSTALKD?
-------------------

Beanstalkd is a fast, distributed, in-memory workqueue service. Its
interface is generic, but is intended for use in reducing the latency
of page views in high-volume web applications by running most
time-consuming tasks asynchronously.

Philotic, Inc. developed beanstalkd to improve the response time for
the Causes on Facebook (http://apps.facebook.com/causes/) application
(with over 9.5 million users). Beanstalkd drastically decreased the
average response time for the most common pages to a tiny fraction of
the original and dramatically improved the user experience.

Stay tuned for a Rails plugin called Async Observer that will make
using beanstalk in your Rails project a snap!


OUR FEW URLS
------------

Download the 0.5 tarball and learn all about beanstalk:
http://xph.us/software/beanstalkd/

Talk about beanstalk development or use at:
http://groups.google.com/group/beanstalk-talk


HOW TO RUN IT
-------------

First, run beanstalkd on two or three machines. There is no
configuration file and only a handful of command-line options.

  $ ./beanstalkd -d -l 10.0.1.5 -p 11300

This starts up beanstalkd as a daemon listening on address 10.0.1.5,
port 11300. If you want to spy on what beanstalkd is doing, recompile
it in debug mode.


HOW TO USE IT
-------------

Here's an example in Ruby. First, have one process put a job into the
queue:


  beanstalk = Beanstalk::Pool(['localhost:11300'])
  ...
  beanstalk.put('hello')


Then start another process to take jobs out of the queue and run them:


  beanstalk = Beanstalk::Pool(['localhost:11300'])
  loop do
    j = beanstalk.reserve
    puts j.body # prints "hello"
    j.delete
  end


DEPENDENCY
----------

Beanstalkd requires libevent. It was developed with libevent 1.3b, but
it may work with other versions.

http://monkey.org/~provos/libevent/


KNOWN BUGS
----------

 * The min heap data structure is not dynamically-sized. This means a
   fixed hard limit on the number of ready jobs (by default set to
   around 16 million).

 * The policy of signalling errors by closing the connection is wrong.
   The server should send a helpful error response whenever possible
   and only close the connection as a last resort.


kr


More information about the memcached mailing list