Why does apache slow down overnight?

Based on your free output, I strongly suspect that your Apache processes are heavily buried in swap. The output of sar -W 1 0 will confirm (or refute) this hypothesis (run it when the machine is running slow).

If the Apache processes aren't all actually serving requests (as shown by mod_status) you should tune the number of "spare" children (with MaxSpareServers) so that they get reaped quicker (and hence don't lay around consuming RAM). If you really do need the number of children you're running to service the request load, you'll need more RAM (I'd go with another 1GB straight up; RAM is cheap, diagnosis time isn't).


What's the process(es) that eats up all memory? Try a iostat/vmstat before any apache restarts - could be a I/O problem.

For trend monitoring, I advise using munin/colectd (those have even very useful apache (for you case, especially) plugins).