Stress testing with Apache JMeter

Apache JMeter is a nice little tool with tons of functionality for testing web sites. It can be used both for stress testing and functional testing. This tutorial is going to show you how to set it up and get started with some basic stress testing.

Installation and initial setup

First, go to the official Apache JMeter website and download the binary, and unpack it on the machine you will be running the test from (your workstation/laptop should ... [continue reading]

Poor man's VPN via SSH socks proxy

It is late night. You have just arrived at your Grandparents, when the SMS beeper goes off. There is a problem with a SAN controller, and the on-call person know you fixed it the last time. Now, if you only had documented it.

You know you have to fix this yourself, but you have no VPN access. You don’t even have an Internet connection, except your 3G mobile phone, and you really need access to that admin web GUI. There ... [continue reading]

Bash process substitution

In bash, we often use redirects (that is < and > ) to get output from a command to a file, or input from a file to a command. But sometimes, commands takes two or more files as input. Then our ordinary scheme does not work anymore.

Classical problem: Diff output from two commands

Let’s say you want to diff(1) the output of two commands. For example, compare the contents of two directories. ... [continue reading]

Backing up the Rados Object Gateway

Amazon S3 has been around for a while, and it has become increasingly popular to use S3 or S3-like solutions as an object store. In many cases S3 replaces NFS as the chosen type of file system.

And with good reason. Separating application instance from application state is almost always a good decision. And by changing from an architecture that requires low-level access to the host running the application to using a REST interface, we can now deploy the application ... [continue reading]

Introduction to strace

There will come a time when you will find yourself asking “What the heck is that process doing?”. To uncover the mysteries behind the behaviour of a process, we have a tool called strace.

The program strace is very handy when you want to debug the execution of a program. It catches and states all the system calls performed called by a process. It will also catch and state any inter-process signals received by this process.

... [continue reading]
Kill, Yank and other simple keybindings in bash

So you are happily working in your shell issuing commands with merry abandon. At some point you typing in a long command, but find yourself in the wrong directory. Do you hit CTRL-c, then change directory for then to type in the entire command again?

Enter kill and yank

CTRL-a and CTRL-e

First some basics, CTRL-a will move the cursor to the start of the command line while CTRL-e will move the cursor ... [continue reading]

Overriding DNS for fun and profit

Now and again, there is a need to override certain DNS lookups. For individual systems you could make changes in the hosts file, but this does not scale well and is easily forgotten. Establishing the override through DNS, one could either use split-view DNS or the old-school strategy of creating a stub zone for that exact hostname (or domain, if you were lucky), but this does not scale very well either and is, let’s admit it, rather ugly.

That said, ... [continue reading]

Simply make rpms from ruby gems

I tend to dislike scattering my file-systems with non-packaged script modules, be it Python, Perl, or Ruby. So I wrap rpm packages for my systems. But packing is such a bother, you might say. That might be true, but luckily, we have good tools to help us.

gem2rpm, semi-automatic spec-file generator

To build this website, we used Jekyll, an excellent small ruby HTTP server for static content. Jekyll is available as a standard Ruby gem, but not as rpms ... [continue reading]

Cloning block devices online using Software RAID

Migrating disk volumes to new storage solutions can be a bit of a chore. Cloning file systems are usually done after taking your system offline in order to preserve consistency. But every so often you simply can’t afford to have your data or system unavailable for that period of time. So what to do?

Our problem

We had invested in new SAN storage solution and had to move the disk volumes for our virtual machines from the old SAN ... [continue reading]

Pipeviewer

pv is a nice little tool that will take stdin and make a nice little progress bar and displaying time elapsed, percentage completed (if size is known) current throughput rate and the total data transferred and with an ETA.

So if you have a tool that can output it’s result on standard output or read from standard input, one can get a progress bar!

It’s nice to know that “data is flowing”.

... [continue reading]