我在使用MySQL的Linux机器上同时运行100个PHP脚本。 我正在使用PDO,ATTR_PERSISTENT参数设置为false。进程通常执行一些SQL命令并休眠30秒。
使用top查看进程列表,我看到了很多mysqld进程,每个进程占用了大量的内存空间。
我理解这个问题可以通过重新设计,使用队列和\或共享连接来解决,但我正在寻找临时修复,直到我准备好更好的设置。
处理此类设置的最佳补救措施是什么? 我应该在进程休眠时销毁并重新创建每个PDO对象吗? 我在PDO或MySQL中错过了一些基本的配置选项吗?
答案 0 :(得分:0)
就PDO和睡眠而言,如果您不打算重新使用连接,请尽早将其杀死。原因在于,当它处于休眠状态时(无效,有效),MySQL上的工作线程仍然存在。
如果您 NOT 会浪费睡眠过程,我建议您进行持久连接并在PHP进程之间共享。然而,这会打开一堆新的蠕虫:死锁。
关闭连接的最佳方法是销毁PDO对象 - 即$yourPDOOBject = null
。