2010-01-19 75 views
0

我有一个Zend/PHP脚本,从一个MySQL数据库中的表读取行,转换数据,并将行添加到另一个MySQL数据库中的第二个表。MySQL逐渐衰减......?

因为我在调试脚本,所以在抛出一个错误之前它已经越来越少了。现在,添加60行后,它退出。一开始它增加了300多行。源数据没有改变。

我试了一下......每块代码都抓住块,我没有得到任何东西,只是一个通用的“破”式的错误 - 这是可能的东西是在Zend Framework中抛出一个错误被抓到,但我不明白与添加行的关系。

它从添加83行到80到74到63到60 ......没有代码间的变化。我在尝试之间清空目标数据库。我已经优化并刷新了数据库,并且我重新启动了MySQL,我重新启动了整个DARN SERVER ...并且它使用相同的模式。

任何野生猜测我可以看看或尝试?

+0

你可以禁用写入和测试只是读取功能? – Matthew 2010-01-19 01:32:27

+0

这样做 - 它运行得很好,如果它不试图写入数据库。 – 2010-01-19 16:38:10

+0

在这种情况下,您是否确实清空了目标数据库? – 2010-01-19 23:06:09

回答

0

问题原来是MySQL中某种内存泄露 - 在说服他们升级到更多21世纪的版本后,问题消失了。在这样做之前,我们确实验证了内存泄漏。

0

必须有数据积累在磁盘(或另一台机器上,你不考虑)的地方,否则你不会看到重新启动时减速。我会猜测内存泄漏会吞噬虚拟机,并逐渐迫使机器进行繁重的交换,从而放慢速度 - 但这又一次不应该在重新启动时持续存在。

假设你没有碰到一些时髦的硬件错误,例如在奔腾4或更新的CPU上死亡的散热,导致CPU本身逐渐升温并放慢响应,使你的脚本能够做得更少并且在碰到PHP中配置的脚本执行时间限制之前工作量减少。