May 13, 2011

Why is redmine so slow?

Every once in a while, we go through an uncomfortable learning session. When that happens, I like to post about it, so people can learn from my ineptitude.

In this case, I was trying to optimize the internal issue-tracking server I set up for the nice folks that employ me, because it was so painfully slow that most folks preferred not to use it. I chose redmine for the task because it's open-source, is reasonable to set up and maintain (no perl involved whatsoever!), under active development, and does all of the things we need.

I'll skip to the end, I don't need to describe just how slow it was. The server configuration was Thin running as a cluster of 4, with Nginx in front. The problem? Server clusters are wonderful, but each instance uses up its own chunk of ram. In this case, the server itself was a virtual slice with 512mb of ram; each thin instance was using up about 150, and mysql 200 over that. So, cache misses abound.

Dropping the number of Thin instances to 1 completely eliminated the slowness, and made me feel like an idiot besides. But at least now I understand more clearly that load-balancing is not the same as performance. Especially for an intranet application with no more than 40 users in theory, and way less in practice.

Start small, load-balance later.