PHP的Allowed memory size of 134217728 bytes exhausted問題解決辦法

PHP的Allowed memory size of 134217728 bytes exhausted問題解決辦法

問題報錯

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 128 bytes) in xxxx/xxx.php on line xx

問題解析

134217728/1024/1024 = 128M

解決方案1

通過ini_set函數修改配置選項值,內存升級爲 256M-1 爲不設限

ini_set(‘memory_limit’,’256M’); 

解決方案2

  1. 修改php配置
vi /usr/local/php/etc/php.ini
memory_limit = 128 //改成memory_limit = 256
  1. php-fpm重啓
/etc/init.d/php-fpm restart
  1. 重啓Nginx
service nginx restart

問題背景

PHP5中,對於memory_limit的設定已經從以往的8M擴大到128M的上限。

對於配置中的定義解釋是: memory_limit = 128M ; Maximum amount of memory a script may consume (128MB) 最大單線程的獨立內存使用量。

也就是一個web請求,給予線程最大的內存使用量的定義。

memory_limit的內存分配,標配是128M。
一旦獨立的線程超過了128M,那PHP會報錯: Fatal error: Allowed memory size of 33554432 bytes對於8G內存的服務器,如果同時併發的響應達到50,每個都是128M的峯值,那估計也是服務器會卡死的時候。

儘量降低128M的內存配置,如果調整至64M,服務器的負載基本能下降一半左右,如果能調整至32M效果更好。

但是對於應用的要求就更高,很多表建立初期就沒有考慮到這個問題,如果你要採用memcache作爲數據的存儲,必須提前完成優化數據表的設計部署,降低獨立線程PHP的內存使用量,服務器的響應和負載降低的就不僅僅是幾個百分點的效果了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章