Suggestions for finding performance bottleneck on LAMP server

0

I know this question has been asked a thousand times and I've read through a bunch of the answers, but haven't found one that really helped me.

I've used top and I'm not swapping at all, I've got about 500 MB of free RAM (each Apache process is consuming about 80MB), the CPU load is essentially non-existent... I've set MySQL's slow query log to contain any query taking more than 1 second and it's empty.

I was running a bunch of Drupal sites on my old linux box. I decided to upgrade the machine because I was going to run a Groupon deal and I wanted to make sure I could handle the load spikes. I wasn't experiencing any slowness on my server with the current traffic, but I didn't want to slashdot myself with a Groupon. The new machine has 4 GB of RAM compared to 1 GB on the old machine. It's got a much faster processor, but I don't have the specs on the new vs old on hand.

I've been experiencing HORRIBLE bouts of slowness on the new server, but my ISP refuses to consider the possibility that it's the server or the configuration on the server. They just keep blaming "my software" (even though it's Drupal's software and Drupal is wicked fast).

When I say horrible, I mean about 30% of the time it takes more than 3 minutes to load a single page with barely any content. I turned on profiling inside Drupal and from Drupal's perspective, the entire page transaction takes less than 500ms on the high end (usually closer to 300ms) and MySQL queries take a total of about 30ms.

Whenever I'm browsing to my own site and I get a patch of really REALLY slow requests, I check my connection with pings and traceroutes to other websites and I don't find myself dropping packets. During one of the slow downs I was even able to login to my ISP's admin panel and write an entire Trouble Ticket before the page finally loaded.

Can you give me any suggestions for where I can look for the problem? How can I narrow the field to find where the problem exists?

My code didn't change from the old server to the new server. The only variables are the hardware and and the server configuration, so I feel like the problem has to be in the server configuration.

Here is an example URL on my site:

http://www.inadaydevelopment.com/content/financial-freedom-principles

I tried running a ping to my site, to see if my home FiOS connection was causing me to drop packets and interfere with the connections, but in 1000+ pings I didn't drop a single one. However, during those 1000 pings, I experienced several page loads which took more than 6 MINUTES. The browser spins in the "connecting" state, as opposed to the "connected and downloading resources" state.

--- inadaydevelopment.com ping statistics ---
1010 packets transmitted, 1010 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 80.661/83.935/222.001/8.891 ms

Kenny Wyland

Posted 2013-04-13T00:25:14.740

Reputation: 131

1LOL, Drupal is wicked fast do you do stand up? I don't have any idea why you are taking 3 minutes, but Drupal is painfully slow when compared to static html. – Zoredache – 2013-04-13T01:00:30.650

Btw, install a PHP profile/debugger xdebug. that should almost certainly give you a good ideal of what the problem is.

– Zoredache – 2013-04-13T01:02:22.720

I wonder if the problem may be "MTU" related. I've seen this kind of behaviour when the MTU is set too high, and nothing is doing MTU clamping. A quick check for this would be to set a lower MTU for the box (which is less efficient), see if that fixes the problem, and if so either use IPTables to do MTU clamping or find the correct MTU. If your current MTU is > 1500 (jumbo frames), try setting it to 1500. If its at 1500, try setting it to 1476 (to allow for MPLS and other encapsulation that may be happening). – davidgo – 2013-04-13T03:30:49.143

@Zoredache, yes, I know static html is ridiculously fast, but you've completely missed the point that Drupal does an INCREDIBLE amount of work in less than half a second, but I'm getting 3+ minute load times. – Kenny Wyland – 2013-04-13T03:31:43.290

what kernel version are you using? uname -r – cybernard – 2013-04-14T16:52:20.670

Newer hardware has different optimizations and may require a new kernel to support those optimizations. It could something part of the website itself. I have used gallery and it was fine and then I added a specific module and it ground to a halt. I remove the module and everything was back to normal. – cybernard – 2013-04-14T17:01:16.267

@cybernard $ uname -a Linux inaday 2.6.32-279.22.1.el6.x86_64 #1 SMP Wed Feb 6 03:10:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux – Kenny Wyland – 2013-04-14T20:35:42.510

For testing purposes: on a test unit install "Noscript" from noscript.net. It is a web browser plugin, and will disable various types of scripting. Disable all scripting. Load the website is it fast or slow. If it is fast turn 1 thing on at a time and retest until it becomes slow. – cybernard – 2013-04-16T04:11:29.857

No answers