I had 2 servers at OVH and Dedibox that were in complete redundancy (files, MySQL, web, mail, DNS) with DNS failover. No longer having the same needs, I wanted to reduce my server costs while keeping a server whose system I could manage. I signed up for the dedicated server offer from 1&1.

Well, I can tell you that I regret it. Basically, at 1&1 you get 4 GB of “available” memory and 1 GB of “reserved” memory. It’s a bit like Orange’s “unlimited” which is actually limited. The available memory is there “sometimes” and you can’t even specify that you don’t want it. And the reserved memory, I have the strong impression that it’s not actually reserved.

The problem I have is that at times the virtualized kernel refuses to allocate memory and then everything is blocked:

[Thu Mar 11 18:45:35 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Thu Mar 11 18:45:45 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Thu Mar 11 18:49:03 2010] [error] server reached MaxClients setting, consider raising the MaxClients setting

When Apache reports that it has reached “MaxClients”, it means it has crashed. And then it’s game over: the server accepts connections but never responds.

The “cannot allocate memory” is completely scandalous. How can you claim to offer a virtualized server if you can’t guarantee a minimum amount of memory? The worst part is that I really don’t consume much RAM - I should never exceed 800 MB. My current stats are:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          4096        570       3525          0          0          0
-/+ buffers/cache:        570       3525
Swap:            0          0          0

So I had the brilliant idea to enable a swap file, but when I execute “swapon”, it turns out it’s not possible:

dd if=/dev/zero of=/var/swapfile bs=1M count=1024
mkswap /var/swapfile
swapon /var/swapfile

I get a nice “Operation not permitted” on this last command. Indeed, it’s Virtuozzo that’s supposed to handle memory swapping at its level. That’s also when you realize that kernel virtualization isn’t necessarily great.

It’s quite incredible. I would prefer 512 MB of RAM “for real” than 4 GB of RAM that I can’t rely on.

But that’s not all. For a while, the server was barely reachable - I had 3 out of 4 packets being lost. Then another day, the load reached alarming levels continuously with a server that was practically idle. Support told me I must have misconfigured something. The outage lasted 2 days, but of course they only responded 2 days later, so naturally they don’t see any problem. And apparently, they don’t have monitoring tools for their servers to acknowledge the issue.

In short, I’m leaving them. I’m going to do everything I can to avoid paying for the commitment period, but I’d rather lose that money than have to deal with (or more precisely, make visitors deal with) sites with random availability.

Furthermore, Debian was only available in 32-bit at their place. I had to choose between CentOS 64-bit and Debian 32-bit. That’s the kind of choice I don’t really like to make.