Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I have a potential client that has a php site that performs fine most of the time. However, every week or so, it will experience lag (slow page loading). I am sure there are a myriad of things that can be causing this (network issues, bad installation, a specific php file, increased traffic load). However, I need a way to deduce what is causing this. Is there any server monitoring software that is made especially to handle these situations?

PS: The server is linux

share|improve this question

5 Answers 5

up vote 1 down vote accepted

I would find out the following:

  • Does this "slow down" effect all users?
  • Is this slow down for the entire site, or just a specific set of functions within the site?
  • Does it happen at the same time every day and the same day each week?

If the slowdown is always on Friday at quitting time and the application is used for users to enter their time card data for the week, it might simply be the server needs more CPU/Memory and or Bandwidth to take the load of all the last-minute users. Suffice it to say, those type of patterns will be hard to track down without knowing the ins and outs of the application and its users and uses.

In order to recommend tools, we'd need to know what OS your app is running on? Windows/IIS, Linux/Apache? However, in my anecdotal experience, site slowdown is caused by one of a few things:

  • Poor database programming
    • SELECT * FROM TableXYZ
    • Queries to un-indexed columns
  • Server Issues
    • Not enough memory
    • Not enough bandwidth
      • Server --> User
      • Server --> Database

The most common things to check (for performance related problems) are

  • Database Server
    • CPU Load
    • Available Memory
    • Disk Queue Length (is your disk IO maxed out?
  • Web Server
    • CPU Load
    • Memory Usage
    • Bandwidth to end users
    • Bandwidth to database server
share|improve this answer
    
Thank you for the informative post. The server is running on linux/apache. I will be running profiling on the files themselves to identify points of weakness (the first 2 parts of your list). I just need some software to monitor for the second 2 parts of your list. –  user57187 Apr 11 '11 at 18:17
    
Have you been through this thread for Linux Performance monitoring tools: serverfault.com/questions/74863/… –  Nate Apr 11 '11 at 18:20
    
Thanks, found some great stuff there. –  user57187 Apr 14 '11 at 17:53

For us in the MSSQL environment, the Auto-grow DB option being enabled on a busy DB server can cause a random slowdown to occur as well. During the Auto-grow, disk I/O is very heavy as the file is being expanded, thus any real-time transactions occurring during that time will be noticeably slower especially if this server is already running near its I/O limits.

To solve this, we simply expanded the DB auto-grow amount in MBs to a ridiculously large number such that it only occurs once a year now. Still a slow-down but it doesn't happen every week now.

share|improve this answer

A really great little tool for system monitoring (either ad-hoc on the command-line or for trends if you set it up to run in the background and log data), is dstat. It's the best tool I've found for the command-line.

One benfit is that its only dependency is on Python, so you can run it right out of your home on a system you have limited access to, and most functionality doesn't require root.

Here's a favorite alias to give you real-time usage of the major components (and the heaviest hitting processes) each second:

> which dstat-long
dstat-long      dstat -cdngm --top-cpu --top-mem
share|improve this answer

How do you measure the slow down? Do you use external web monitoring tools like keynote or alertfox? That would be useful to compare with the internal logs.

share|improve this answer

Do you have shell access?

Is sysstat installed?

If you have shell access, make sure sysstat is installed, and enabled. Wait an hour or so for it to collect data, and type "sar" as root, from the command line. If you see data, great. Now leave it. Read through sysstat or sar tutorials in the mean time. WHen you see lag again, connect, run sar, see what exactly is slowing it down when. Seeing exactly when, and what is being starved (CPU/Memory/IO/Network) will give you a better idea of what to look at.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.