1

Our Heroku app went down for a period of time yesterday. The error message in our logs:

[error] server reached MaxClients setting, consider raising the MaxClients setting

I checked the httpd.conf to see what the MaxClients setting was, and this is what I found:

MaxClients 1

The commit that added these directives is on Heroku's Github. Does there appear to be a rationale for a MaxClients setting of 1, or is it simply arbitrary? Are there any considerations I should make when increasing it?

Brad Koch
  • 175
  • 11

2 Answers2

2

Heroku dynos are designed to be a single unit of computation. For comparison:

A single-threaded, non-concurrent framework like Rails can process one request at a time.

Setting MaxClients 1 is simply telling your PHP dyno to only handle its one request at a time. Since the dyno is actually capable of handling many more requests that that, MaxClients can and should be raised to a number much larger, such as 256.

Brad Koch
  • 175
  • 11
  • 256 is much too large. A Heroku dyno only has 512MB of memory. Each process probably uses 64MB, depending on what the `memory_limit` is in PHP.ini. So you should take 512 / 64 = 8 and set `MaxClients` and `ServerLimit` to that. Otherwise you run the risk of too many requests flooding the server and it spawning too many processes, possibly thrashing the disk or crashing. You can usually over-subscribe 20% because most requests don't take up all it's allocated RAM, so 10 is a good number. – Chloe May 24 '15 at 20:49
1

Here explaint mean MaxClients: http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients

Try increase parameter about 250 and retry

tquang
  • 256
  • 1
  • 6
  • I understand MaxClients is too low. I'm trying to understand the why - why is the default setting 1, and what implications does that entail for changing it? – Brad Koch Aug 09 '12 at 14:55
  • 1
    You'll have to ask whoever checked in the code. And the implications is that the server will only handle one simultaneous connection, which is very close to pointless. – Michael Hampton Aug 13 '12 at 21:09