0

我在一台装有 MySQL 的 Linux 机器上同时运行 100 个 PHP 脚本。我正在使用 PDO,将 ATTR_PERSISTENT 参数设置为 false。进程通常执行一些 SQL 命令并休眠 30 秒。

使用 top 查看进程列表,我看到很多 mysqld 进程,每个进程都占用大量内存空间。

我知道这个问题可以通过重新设计、使用队列和\或共享连接来解决,但我正在寻找一个临时解决方案,直到我准备好更好的设置。

处理此类设置的最佳补救措施是什么?我应该在进程休眠时销毁并重新创建每个 PDO 对象吗?我是否缺少 PDO 或 MySQL 中的一些基本配置选项?

4

1 回答 1

0

在 PDO 和睡眠方面,如果您不打算重新使用连接,请尽早将其终止。原因是,当它处于休眠状态时(实际上是无用的),MySQL 上的工作线程仍然存在。

如果您打算浪费睡眠进程,我建议您使用持久连接并在 PHP 进程之间共享它。然而,这打开了一个新的蠕虫罐:死锁。

关闭连接的最佳方法是销毁 PDO 对象 - 即$yourPDOOBject = null.

于 2012-11-28T09:07:41.327 回答