Riemann server crosses 10k events/sec

Riemann, the distributed event-processing server built on the JVM, has crossed the 10,000 events per second mark in production. In stress tests, it is currently sustaining roughly 11,000 events per second—the final throughput dip in the graphs is a partial-data artifact from the visualization system.

The performance goal was defined against its predecessor, UState, which targeted 1,000 state transitions per second but achieved only about 600 on a MacBook Pro, with close to 1,000 on real hardware. UState’s bottlenecks were typical of that stack: concurrency limits in MRI’s interpreter lock, SQLite’s generate-and-exchange overhead, and protobuf parse times. Riemann, written in Clojure on the JVM, replaces that architecture with Netty for I/O, a mature thread model, and a range of high-performance libraries for parsing, state, and statistics.

Notably, Riemann’s current numbers came with minimal optimization effort. The implementation uses no profiling, no type hints, and no reflection warnings enabled; it relies on a heavy abstraction layer (aleph) on top of Netty, and all operations run over synchronous TCP. The benchmark exercises complex stream topologies—dozens of where filters—with every event also updating the index.

10k.png

In practical deployment terms, Showyou’s entire infrastructure pushes about 200 events per second through a single Riemann server, leaving significant headroom for expansion.

throughput.png

cpu.png

Road to release

Riemann is in the final stages of packaging for its initial public release this week. Boundary has offered its office space for a tech talk on Thursday, March 1st at 7 PM, with the Meetup link to be posted shortly.