PHP5ではmemory_limitの設定が従来の8Mから上限の128Mに拡張されました。
設定内の定義の説明は次のとおりです:
memory_limit = 128M ; スクリプトが消費できるメモリの最大量 (128MB)
単一スレッドの最大独立メモリ使用量。つまり、Web リクエストはスレッドの最大メモリ使用量の定義を提供します。
既存の Web サイトやフォーラム アプリケーションのほとんどでは、アプリケーション ソフトウェアは次の形式で構成されています:
Nginx (Apache) PHP Memcache Mysql
上記のアプリケーション ソフトウェアを使用する利点については詳しく説明しません。ただし、Memcache の使用はデータベース アクセスの頻度を減らすことであり、サービスの応答を改善する方法でもあります。ただし、memcache とデータベース データ ストレージの違いは、memcache データが上記のデータの形式でメモリに格納されるのではなく、抽象化され、文字およびハッシュ テーブルの形式でメモリに格納されることです。このようなストレージの違いにより、memcache データを抽出するたびに、すべてのデータを逆の順序でシミュレートし、すべてのデータを単一の独立したスレッドにインポートする必要があるという事実が生じます。次に、2 番目のステップは、必要なデータをフィルターして抽出することです。
アプリケーションプロセス中に、データベースからデータを読み取る場合、最適化方法は、SQL ステートメントの最初のフィルタリングが可能な限り正確であることを確認し、必要なフィールドのみを取得し、フィールドは取得しないようにする必要があることを知っておく必要があります。すべてのフィールドを除外し、アプリケーション内で必要なフィールドをフィルタリングします。これにより、サーバーの負荷に根本的な違いが生じます。
memcache を使用する場合、最初はデータベースを正確にフィルタリングすることはできません。次に、テーブルの設計を開始するときにこれを考慮し、memcache データ テーブルに含まれるデータをできるだけ少なくするように努める必要があります。これは、テーブルを複数のテーブルに分割することで実現できます。
memory_limit メモリ割り当て、標準構成は 128M です。
独立スレッドが 128M を超えると、PHP はエラーを報告します:
致命的エラー: 許容メモリ サイズは 33554432 バイトです
8G メモリを搭載したサーバーの場合、同時応答が同時に 50 に達すると、それぞれの応答がピークに達します128M の場合、サーバーがフリーズする時期が推定されます。
メモリ構成を 128M に減らしてみてください。64M に調整すると、基本的にサーバーの負荷を約半分に減らすことができます。32M に調整できれば、効果はさらに良くなります。
ただし、アプリケーションの要件は高くなります。多くのテーブルは確立の初期段階では考慮されません。memcache をデータ ストレージとして使用する場合は、事前に最適化されたデータ テーブルの設計とデプロイメントを完了して、メモリ使用量を削減する必要があります。独立したスレッドの PHP により、サーバーの応答と負荷が数パーセント以上減少します。