1. ホーム
  2. php

phpのAllowed memory size of 134217728 bytes枯渇問題の解決法

2022-01-24 03:21:20

phpの許容メモリサイズ134217728バイト枯渇問題の解決方法

報告されたエラー 
致命的なエラーです。xxxx/mysqli_result.php の行 183 で、134217728 バイトの許容メモリサイズを使い果たしました (128 バイトを割り当てようとしました)。

パースしています。 
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 を再起動します。
Nginxの再始動
サービス nginx restart


PHP5では、memory_limitの設定が従来の8Mから128Mに拡張されました。

設定での定義は、以下のように説明されています。 memory_limit = 128M ; スクリプトが消費できる最大メモリ量 (128MB) シングルスレッドでのスタンドアロンメモリ使用量の最大値です。

つまり、Webリクエストのためにスレッドに与えられるメモリ使用量の上限を定義したものです。

memory_limitのメモリ割り当て、標準は128Mです。スタンドアロンスレッドが128Mを超えたら、PHPはエラーを報告します。致命的なエラーです。Allowed memory size of 33554432 bytes メモリ8Gのサーバーで、同時応答が50に達し、それぞれが128Mのピークに達した場合、サーバーが動かなくなるのもこの時だと思います。 
128Mのメモリ構成を減らそうとすると、64Mに調整すれば基本的にサーバーの負荷は半分くらいになりますし、32Mに調整できればさらに良くなりますね。しかし、アプリケーションに求められる要件はもっと高く、最初からこのことを意識して構築されていないテーブルも少なくありません。データのストレージとしてmemcacheを使うのであれば、事前にデータテーブルの設計と配置の最適化を済ませておき、PHPの独立スレッドのメモリ使用量を減らすと、数%の効果以上にサーバーのレスポンスと負荷が軽減されるはずです。

私のWeChat公開アカウントです。心禅道(xinchandao)

私のWeChat公開アカウントです。双色球预测合买 (ssqyuce)