Geekout

From one propeller head to another!

Earnstone Sharded Column Index for Cassandra — March 30, 2011
Earnstone Unique ID Generator — March 2, 2011
Java Performance Counters — February 12, 2011
Cassandra Performance Testing on EC2 — October 3, 2010
Raid Level 0 Setup on Amazon EC2 EBS drives — July 28, 2010

Raid Level 0 Setup on Amazon EC2 EBS drives

Introduction

This will be a short post describing how we configure a raid level 0 drive on an EC2 instance using the EBS drives. For a lot of our functionality we typically use the ephemeral drives and periodically backup content using the EBS drives and snapshots. We mainly use raided EBS drives to get the maximum performance out of an Amazon EC2 small instances. For example we have seen nearly double the performance out of our Cassandra cluster on small instances using raided EBS drives.

Continue reading

Multi-machine EC2 Cassandra Setup in 30 minutes — June 21, 2010

Multi-machine EC2 Cassandra Setup in 30 minutes

Introduction

In this post we will walk through setting up a production ready 3 node Cassandra cluster with Munin monitoring running on Amazon EC2 in under 30 minutes. We will also walk through getting the sample Cassandra stress scripts running with a basic load on the 3 node cluster. This post builds on a previous post about how to setup and maintain an EC2 virtual instance with our supplied unattended install scripts. If you wish to know more about how our unattended install scripts works please review my previous post located here.

Continue reading

Unattended Amazon EC2 Install Script — June 7, 2010

Unattended Amazon EC2 Install Script

Introduction and Basic Setup

After maintaining several version of my own private AMI’s and, realizing what a pain maintenance was, I decided to find a better solution. There is a lot of great information on the net if your google-fu is good, but I decided to compile all the information I use into a couple scripts and describe each step in detail so others could understand, modify and use the scripts. The overriding goal is to allow the flexibility of launching and configuring remote Amazon EC2 instances in an non-interactive manner.

Continue reading

JMX Support for Java Perf Counters — May 19, 2010

JMX Support for Java Perf Counters

I have added JMX support to the Simple Java Performance Counters. For a detailed description on the Java Performance Counters please check out my previous post located here.

We expose JMX support by implementing a custom DynamicMBean known as JmxPerf. Currently, we only expose the display value, but it might makes sense to expose the raw value as well. This will allow JMX tools to sample the counter(s) and chart progress. The JMX bean is exposed by calling the PerfRegisty.registerJmxBeans(int jmxServerPort, int jmxRegistryPort) method. Lets examine this method below located in PerfRegisty.java.

Continue reading

Java in Memory Cache — April 23, 2010

Java in Memory Cache

Lets look at creating and using a simple thread-safe Java in-memory cache. It would be nice to have a cache that can expire items from the cache based on a time to live as well as keep the most recently used items. Luckily the apache common collections has a LRUMap, which, removes the least used entries from a fixed sized map. Great, one piece of the puzzle is complete. For the expiration of items we can timestamp the last access and in a separate thread remove the items when the time to live limit is reached.

Continue reading

Simple Java Performance Counters — April 16, 2010

Simple Java Performance Counters

There doesn’t seem to be a whole lot of open source options for Java performance counters.  Since I found it frustrating and rolled my own I decided to share my work so others could just ditto it.  The overarching principal is Simplicity or more importantly KISS.  I wanted something fast, simple, easy to use, fast, simple and thread-safe (did I mention fast and simple).  After working with windows C++ performance counters (yuck!) talk about warts and .NET performance counters (nice band-aid, but still didn’t cover the warts) I opted for a simple under-engineered design.

Continue reading