Software

Since 2001, derkeiler.com is running 24 hours a day.

On our servers, thousands of processes perform complex tasks 365 days a year.

This wouldn’t be possible without brilliant pieces of software.

On this page I want to present useful programs which I’ve been using for years, and which just work flawlessly.

FreeBSD

FreeBSD Everyone knows that choosing an operating system is one of the most important decisions when building an IT infrastructure.

In my eyes everyone should choose the operating system which fits his needs best. I’ve chosen FreeBSD for my servers for the following reasons:

Apache

Apache It’s by far the most popular webserver used on the internet, and it’s stability is unquestioned.

On the derkeiler.com-Cluster more than 50 different apache instances are running 24 hours a day, and it never failed.

mod_gzip

mod_gzip Content compression is one of the coolest http extensions ever created, and it’s surprising that not many people are using it.

There is much to write about mod_gzip. Fortunately I already wrote an article about it for Linux Magazine. You can find it here (there is also a german version available).

Perl

Perl To start with the biggest problem:

Perl is very flexible. There are most of the time several ways of doing something in perl. The problem is that it’s easy to do something, but hard to do things right. If you use perl in a critical environment it’s up to you as a programmer to follow good programming practices like declaring variables, the language itself doesn’t force you to do so.

Beside this, perl is a great language to perform most tasks. It’s robust, has a c-like syntax, garbage collection, infinite modules and is quite fast.

If you want to learn perl: Get a book which sets a high value on clean coding style (most perl books I know don’t do this). The free book Learning perl the Hard Way from Green Tea Press is a positive example.

mod_perl

mod_perl As seen above Perl is used on our sites to perform various tasks, including offering you dynamic content. For every page request at least 5 different Perl programs are started.

A widely used technique to implement dynamic content into a webpage is CGI. With CGI, for every request to a program this program has to be started, executed and terminated.

Especially with interpreted programs this technique has a large performance penalty: The start of the interpreter and compilation of a script normally takes longer or as long as the execution of an average CGI program.

To overcome this overhead mod_perl makes the perl interpreter a part of apache. Furthermore it’s possible to compile all perl scripts on apache startup. This way you are able to trade memory (which is relative cheap these days) for speed.

MySQL

MySQL MySQL is a high performance relational database.

Back in 2000 when I first stumbled across this database it did not offered much features beside having SQL as query language (even MS Access had referential integrity this time).

Anyway i started using it, and have never lost a single dataset which was stored in a MySQL database.

Over the years MySQL became a full featured database with features like replication, transactions and referential integrity.

On the derkeiler.com-cluster the MySQL servers handle about 150 SQL querys per second without problems.

If you run your own MySQL server I recommend the book High Performance MySQL. It’s one of the best computer books I ever read and saved me from buying new hardware.

memcached

memcached is a high-performance, distributed memory object caching system.

It’s used to store information which has to be accessed fast, but is not important enough to be stored in a database.

Cacti

Cacti Cacti is a system monitoring solution which provides graphs about various system parameters.

It’s not designed to be a alerting system, but it’s great to provide long-term trends.

I use it to monitor about 50 parameters of the system, from bandwidth usage to the behavior of the MySQL database.

The gathered information is especially useful to optimize and tune the system.



Behind the scenes | Thanks

1