Im running a webserver where I'm hosting about 6-7 websites. Most of these websites get their content from MySQL which is hosted on the same server. Traffic average per day is about 500-600 unique visitors, about 150K hits per week.

But for some reason sometimes websites send a timeout, OR sometimes websites dont load all images. I know that I should perhaps separate static content from dynamic content, but for now I think that's not a possibility.

I would appreciate any suggestions on how could I improve the performance of apache, so it doesn't keep timing out.

Whilst it's difficult to say for certain without glancing at the Apache error_log I would be concerned that you are hosting six or seven web sites on an Internet connection with only 1Mbit of upload bandwidth. I presume this is either in a very small office or in your own home. Whilst 1Mbit may be adequate for your traffic expectations it sounds fairly plausible that the 1Mbit connection is the cause of intermittent web site loading problems.

I would suggest either outsourcing your sites to a professional web host or perhaps purchasing a low-cost Xen based VPS from a provider like Linode or Slicehost.

At the very least, ensure your DNS is hosted professionally and externally.

If the problem is not with your internet then my second thought would be Apache running out of memory. Apache, with mod_php is fairly memory heavy, each process consuming up to 50MB of ram. Combine that with Apache's default KeepAlive setting of 15 seconds and you could potentially run out of memory, depending on how much SWAP space you have allocated.

Personally I would go with a lighttpd or nginx fastcgi asynchronous event driven model, which can handle many more connections whilst using a fraction of the memory.