Ubuntu 11.10上Apache配置与mysql max_used_connection冲突

Ubuntu 11.10上Apache配置与mysql max_used_connection冲突

我的生产服务器运行 Ubuntu 11.10,内存为 48GB,出现了一些严重问题。我的网络服务器(Apache 2.1)的设置配置为使用大约 18 GB 的内存。我尝试通过设置来计算此值

  • 最大客户端数 800

每个子进程占用近 23MB 内存

  • 最大备用服务器数 200
  • 保持活动状态
  • 保持活动超时 3

Apache MPM 设置为prefork 模块

此外我们还使用

  • php 5.3.2
  • PDO 连接数据库

我对我的 MySQL 服务器 (v5.1) 做了类似的更改,方法是:max_used_connections 设置为 800

  • 密钥缓冲区到 4Gb(Myisam 作为默认引擎,带有 3 个 innodb 表)
  • 密钥缓冲区大小+ (读取缓冲区大小 + 排序缓冲区大小) * 最大连接数 = 5.4Gb

现在最大使用连接数正在迅速增加,几个小时后它停止在595并且它再次攀升至最大值 800。我甚至尝试更改为默认的 mysql 配置,但仍然没有变化。

由于某种原因,更改为 Apache 的默认配置现在可以解决问题最大使用连接数稳定在57

有人知道这种行为吗?Apaches 配置会影响 Mysql 性能吗?

答案1

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

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

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

使用上述设置,您可以轻松支持 5000 个并发客户端。

相关内容