2010-01-19 106 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中配置的腳本執行時間限制之前工作量減少。