1

At our company, we have set up a munin node to gather data about our web server every five minutes. These datas are presented in a graph, and we're wondering if there is anything to gain from tuning our web server based upon them.

For example, this is the graph of Apache's scoreboard data: apache scoreboard

I have stripped out open connections, because there are normally 230 open connections at all times.

The web server peaks normally at noon each work day, and has an average of 5 reqs/sec (with a peak of around 18 reqs/sec at noon).

We have several graphs also representing MySQL data accesses, thread usages, etc., but I am wondering if these graphs may point out some areas we could tweak.

I mean, if we generally have more than 230 open connections at all times, would it be a performance tip to decrease the amount of connections in Apache?

Current configuration:

KeepAlive Off

# prefork
StartServers 8
MinSpareServers 5
ServerLimit 256
MaxClients 256
MaxRequestPerChild

Our web server is a 4 core Xeon, with 8 GB ram.

Here's our daily MySQL connections usage: MySQL connections

So, to my question: do we have anything to gain? And which settings would be appropriate? (If you want more data, let me know, so I can update the post).

Thanks, in advance!

DavidS
  • 171
  • 1
  • 7
  • "If it ain't broke, don't fix it.". Start tuning apache2 once there will be more traffic. If ever you have any problem now, they are not likely to be related to the number of request per second. –  Jan 19 '13 at 14:54
  • Ok, understand. So there is nothing really to gain by decreasing the number of connections? I mean, since there are alot of "unused space", when over 60 % of both MySQL connections and Apache is not used at all. – DavidS Jan 20 '13 at 22:43

1 Answers1

2

Some thoughts:

Right now there's probably no need to worry about number of connections.

It seems you don't have a performance problem at all. So no need to change anything (as Eric said).

However, if you want to prepare for higher load, I'd recommend

  1. Set up some test environment (i.e., a separate server only used for your performance tests)
  2. Create some test scripts which simulate the load to your machine (i.e., running HTTP requests in parallel) - there are tools for that, too
  3. Play with your configuration and see what works best
claasz
  • 510
  • 3
  • 10