php的Allowed memory size of 134217728 bytes exhausted問題解決辦法
報錯:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 128 bytes) in xxxx/mysqli_result.php on line 183
解析:
134217728/1024/1024 = 128
解決方案1:
通過ini_set函數修改配置選項值
ini_set(‘memory_limit’,’256M’); //升級為256M內存
解決方案2:
1、修改php.ini
修改php配置
vi /usr/local/php/etc/php.ini
memory_limit = 128 改成memory_limit = 256
php-fpm重啟
/etc/init.d/php-fpm restart
重啟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的內存使用量,服務器的響應和負載降低的就不僅僅是幾個百分點的效果了。