Apacheconfiguration和MySQL的max_used_connection冲突在Ubuntu 11.10

我的生产服务器运行Ubuntu 11.10的48GB内存有一些严重的问题。 我的web服务器(Apache 2.1)的设置被configuration为使用大约18 GB的RAM。 我试图通过设置来计算这个值

  • max_clients 800

每个subprocess占用了将近23MB的内存

  • max_spare_servers 200
  • 保持活跃
  • keepalivetimeout 3

Apache MPM被设置为prefork模块

另外我们正在使用

  • PHP 5.3.2
  • PDO连接到数据库

我通过将max_used_connections更改为800 ,对我的MySQL服务器(v5.1)做了类似的更改

  • key_buffer到4Gb(Myisam作为默认引擎,带有3个innodb表)
  • key_buffer_size +(read_buffer_size + sort_buffer_size)* max_connections = 5.4Gb

现在max_used_connection正在迅速增加,几个小时后它停在595 ,再次爬到它的最大值800.我甚至尝试改变到默认的mysqlconfiguration,但仍然没有改变。

出于某种原因改为Apache的默认configuration解决了这个问题,现在max_used_connections稳定在57左右。

有没有人有这个行为的想法? Apachesconfiguration能否影响Mysql的性能?

这是在大型服务器上运行apache的一种可怕的方式。

请考虑运行worker MPM(轻量级线程模型),并通过官方apache mod_fcgid模块将代理dynamic请求(PHP)添加到fastCGI后端。

还要确保你设置一个静态的PHP-> mysqli连接数,并重新使用这个池。

使用上述设置可以平均支持5000个并发客户端。