Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm running Apache on a dedicated Windows 2008 server with a back-end process connected to Apache via FASTCGI. The back-end process is actually a game engine. Everything is working fine but I've noticed that things start to slow down when I have about 50 users hitting the server (which translates to about 25 HTTP requests per second). When I look at the Task Manager the CPU usage is between 1% and 5%.

So I'm looking for clues as to where to look to figure out why my response time is degrading even though the CPU doesn't seem to be anywhere close to maxed out.

share|improve this question
Disk I/O, network I/O, and memory would be the next things to look at after CPU. – David Schwartz Nov 8 '11 at 7:25
Is your server accessing other resources on another server like database? The bottleneck can be another server in this case. – Khaled Nov 8 '11 at 17:56
All of those things seems to check out fine. Thanks for the suggestions though. – Joe Rice Nov 9 '11 at 2:21

try apachetop

also think about using a unix system if you need performance, scaleability and reduced costs (in licences) . However you will need to pay for technical's not point and click after all ;-)

you can developed the clients in windows or whatever.

which is optimised for concurrency.

more reading is here which is a bit old, there is a updated version i can't find at the moment.

seeing as this is a game engine, then i presume you client need constant http connection, rather the setup/tear down tcp connections.

you may be able to tune windows to do the job, but once your game scales your going to have problems.

i have some spare cycles, and like games. so pm if you want some 1 on 1 help.

share|improve this answer
nginx looks good. I was thinking I might migrate to that at some point but I was hoping I could scale up to maybe 400-500 users with my current architecture. My http connections use keep-alive, of course, and since the client makes a request every 2 seconds I'm assuming the connections are effectively constant. Thanks for the offer of help - if I can't figure it out in the next few days I might take you up on it. – Joe Rice Nov 9 '11 at 2:18
Figured it out - had to set ThreadsPerChild in the Apache config file to a higher number. Thanks for your help. – Joe Rice Nov 9 '11 at 22:49
great, there are many apache tuning guides out there, for general performance and optimisation problems , find out where the bottle neck is, measure, baseline, and stress test. Once you have this data then tune accordingly. it's not good adding ram for instance, if your cpu bound. You'll find unix based system give you a lot more control of these parameters. – The Unix Janitor Nov 10 '11 at 9:36

Turns out it was an Apache configuration issue. The default number of threads per child process is 64 (at least on Windows). Setting the ThreadsPerChild to a higher number fixed the problem. I've set it to allocate 1500 threads per child which uses about 100 MB of RAM - well worth it.

share|improve this answer

Your Answer


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.