Slow loading website sometimes

October 30, 2015 2.8k views
Configuration Management Server Optimization Load Balancing PHP High Availability Scaling DigitalOcean

Hello everyone,

I'm having issues with my website loading slow at times. I've set up my droplet using Vesta (Ubuntu 14) and the script I'm running uses absolutely no MySQL connections. I've setup Monit which notifies me anytime my website load goes over the threshold and seems to work just fine most times, but I've done random checks and found a simple PHP page (the only external connection is google adsense) can take a few seconds to load at times.

Looking at the graphs in my control panel I see nothing out of the ordinary besides a few random disk and bandwidth spikes that do not correlate well with when I actually have this issue. Over the past 7 days the largest CPU spike I've had was 40%. I'm on the $10 droplet (1 GB ram etc).

Simply rebooting the server from the command line seems to fix the problem. Can anyone help me diagnose whats going on and how I can prevent this from happening?

2 comments
  • A common issue with apache is it's keep-alive settings. If the keep-alive timeout is too high then anytime all the available connections are used they may stay open until the timeout waiting for new requests. When this happens a new connection may have to wait for one of the listeners to time out from it's last connection before it will respond. Normally I would be able to assist you with modifying your apache configuration for this but as your configuration is managed by Vesta I would recommend reaching out to that project's community to see what the best practice for making this type of change is. Many control panels install their own versions of the software they use rather than the distribution's version and some will also overwrite configuration files from their own settings so changes may not be kept.

    Another thing that will reduce your load if this is the only site you are running would be to shut down the unused MySQL service. Even without any connections, MySQL will reserve a good deal of RAM for itself.

  • Hello,

    Thank you, I'll post on the vesta's forum! I do want to ask though if you can give me a guide on how to disable the MySQL service.

1 Answer

This question was answered by @ryanpq:

A common issue with apache is it's keep-alive settings. If the keep-alive timeout is too high then anytime all the available connections are used they may stay open until the timeout waiting for new requests. When this happens a new connection may have to wait for one of the listeners to time out from it's last connection before it will respond. Normally I would be able to assist you with modifying your apache configuration for this but as your configuration is managed by Vesta I would recommend reaching out to that project's community to see what the best practice for making this type of change is. Many control panels install their own versions of the software they use rather than the distribution's version and some will also overwrite configuration files from their own settings so changes may not be kept.

Another thing that will reduce your load if this is the only site you are running would be to shut down the unused MySQL service. Even without any connections, MySQL will reserve a good deal of RAM for itself.

View the original comment

Have another answer? Share your knowledge.