- Search - Brand new search API. Allows one to get beyond the key based lookup of objects (Check out this sample)
- Local Transactions - Fast optimistic concurrency without the need for a TransactionManager (Check out this sample)
- Bigger BigMemory (ee) - 2 Billion entries, 1.3 million TPS, Extreme predictability for meeting SLA's
- Bigger Disk Store (ee) - Swap your Ehcache to disk. Grow to hundreds of gigs with no on heap footprint
Monday, February 14, 2011
Quick 5:41 Intro To Ehcache Search (Now GA)
Wednesday, January 26, 2011
Ehcache At 2 Billion...
What's Up With Ehcache 2.4
Ehcache is the de facto caching standard for Java that everyone uses (500,000+ production deployments; the majority of enterprise Java applications). Ehcache 2.4 is coming out soon and includes some capabilities that will make it even easier to use, more powerful, while still maintaining it's light weight.
The highlights include:
- Search - Quickly find entries based on the criteria of your choosing. String matching, dates, ranges, sums, averages etc.
- Fast local transactions - Improved performance of JTA and added a new non-jta transaction api for user level control
- Even more capacity and performance
What I've been Testing
I've written before about BigMemory for Enterprise Ehcache and how it solves the problem of long, unpredictable GC pauses in Java. The first release of BigMemory was… well, big. In Enterprise Ehcache 2.4, BigMemory has gotten even bigger.
Using the Enterprise Ehcache Big Memory Pounder I was able to show that Enterprise Ehcache 2.4 now easily handles:
- Entry Count: > 2 billion entries (I reached 2 billion on the hardware I had; with bigger hardware, I could probably have gone much higher).
- Throughput: 1.3 million operations per second (symmetric read and write; CPU bound)
- SLA/Predictability: No GC pauses and a predictable 38-42 ops/thread/millisecond throughout the test
- Data Size: 1-350 GB in-memory cache (again, I was limited by the hardware I had; with more RAM, I could probably have gone much higher)
- Flexible Efficient Entry Sizes: The cache can now dynamically handle very large (10-100 MB) and very small entries (just a few bytes) together more efficiently with no tuning (This test used small entries in order to fit as many entries as possible into the memory I had. I also ran tests with fewer entries in order to validate wide ranging sizes)
- Tuning: All tests were done with NO TUNING. Right out of the box.
Here's the hardware and software stack I used for my testing:
Cisco UCS C250 Server
Dual Intel x5670 2.93 Ghz CPU
384 GB RAM ( 8 GB x 48)
Redhat 5.4 Enterprise Edition
Sun JDK 1.6_22
For this test, all of the data was in memory.
A Bit About Ehcache BigMemory
BigMemory is 100% pure Java and in process with a Java application. No magic or special JVMs (works on IBM and JRocket as well). The cache data is safely hidden away from Java GC and the pauses that occur with large heaps by instead storing data in a BigMemory off-heap store.
Embedding
BigMemory got it's start as a component in the Terracotta Server Array and as a result it is particularly useful for embedding. It's performance characteristics and no tuning approach improves "The Out Of The Box Experience" and saves money on support by removing tuning required by users and problems caused by GC pauses.
You may be thinking...
"I don't have 2 billion entries in my caches?"
That's ok. Ehcache is a lightweight core library (under 1MB) for caching that's ubiquitous and easy to use. When it's needed, Ehcache lets you scale up and out to billions of entries and terabytes of data. It does so at a manageable server density without changing code/architecture and without a bunch of tuning and learning. This protects not only your knowledge investment but your code investment.
More about BigMemory for Enterprise Ehcache:
http://terracotta.org/bigmemory
More about the 2010 Ehcache user survey:
Ehcache User Survey Whitepaper
Wednesday, December 15, 2010
Ehcache To The Rescue (Comic Strip)

Monday, November 29, 2010
Quartz Scheduler 2.0 Beta 1 Welcomes New Fluent API and "Where"
- Simplify/modernize the Quartz API.
- Improve the Quartz experience when leveraging a cluster
- The date/time related methods have been moved off of the Trigger and Job classes into a Date building class called "DateBuilder"
- We've removed the need to know details about which Job and Trigger classes you need and instead infer them through the building methods you call.
- The construction now reads more like a sentence. new job withIdentity "job1", "group1". new trigger withIdentity "trigger1", "group1" start at runTime
Ehcache 2.4 Beta 1 Welcomes Search, Local Transactions and more...
- A bit of annoying coding
- Only practical for unclustered caches
- Transactions without a JTA transaction manager
- More speed
- NonStopCache now built in. Rather than have to add a jar and configure a wrapper to get the non-stop characteristics in clustered land this is now built into the product core and be turned on via configuration
- Search now works clustered - The new search API is backed by the Terracotta tier. This is still early and we have a lot of performance and HA work to do here. That said, it is testable and usable so give it a try.
- Explicit locking module is now in the core kit
- Rejoin now works in non-stop (You can disconnect from a cluster and reconnect to that cluster without restarting)
Monday, November 15, 2010
Direct Buffer Access Is Slow, Really?
Type: ONHEAP Took: 8978 to write and read: 10737418368
Type: DIRECT Took: 9223 to write and read: 10737418368
Type: ONHEAP Took: 8827 to write and read: 10737418368
Type: DIRECT Took: 9283 to write and read: 10737418368
Type: ONHEAP Took: 8813 to write and read: 10737418368
Type: DIRECT Took: 9604 to write and read: 10737418368