簡體   English   中英

Php高內存使用率

[英]Php high memory usage

我們有一個舊的Facebook應用程序,運行順利用本機php編寫。

本月我們決定在zend-framework 2中重寫它。昨天,在切換到新應用程序后,它崩潰了我們的服務器,出現了大量的內存不足錯誤。 所以我們回到舊應用程序。

我安裝了xdebug來分析應用程序。 使用memory_get_peak_usage()函數我發現內存使用率很高。

在舊版應用程序中,靜態頁面僅使用1 MB內存。 但新的大約在同一頁面上使用7-8 mb。

這是webgrind的前兩行:

   Function                                     Invocation Count    Total Self Cost    Total Inclusive Cost
   Composer\Autoload\ClassLoader->loadClass     224                 23.31       47.20
   Composer\Autoload\ClassLoader->findFile      224                 9.57        10.23

還嘗試了apache的ab工具

   ab -n 50 -c 5 -C PHPSESSID=SESSIONID http://myhost.com

結果是:

   Percentage of the requests served within a certain time (ms)
   50%    368
   66%    506
   75%    601
   80%    666
   90%   1073
   95%   1812
   98%   2278
   99%   2278
   100%   2278 (longest request)

所有這些都來自生產服務器而不是localhost。

單頁正常是7-8 MB嗎? 如果沒有,我該如何減少它? 我應該在zf2或作曲家中尋找它嗎?

如果需要,我可以提供代碼示例。 謝謝。

將解決方案從本機遷移到Zend時,您必須了解Zend的工作方式。

Zend由許多類組成,當您使用Objects而不是native / light結構時,使用的內存會增加。

要改善內存使用,請查看代碼並執行以下操作:

  • 在函數中包裝一些代碼,它可以幫助垃圾收集器從內存中刪除未使用的對象。
  • 在打印之前不要將大型對象列表存儲在數組中,即時打印。
  • 限制循環中對象的創建(調用'new')。

跳這有幫助。

我花了一天時間來弄清問題。 試過xdebug,xhprof。 代碼中沒有問題。

我們切換回2.0.0並解決了問題。 我不知道新版本有什么問題,現在堅持使用2.0.0。

整體內存使用量約為4mb,沒有崩潰。

composer.json:

"zendframework/zendframework": "2.0.0", 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM