サポート » 使い方全般 » 他に「Out of memory 」を回避する方法

  • 解決済 tarove

    (@tarove)


    PHPバージョン7.1

    ここ数日、「Out of memory 」が頻発するようになりました。
    ネットやフォーラムによく出ている対処法は、ほとんどやってみたと思います。

    ・PHP設定でメモリサイズを上げる
    memory_limit = 256M
    upload_max_filesize = 256M
    post_max_size = 256M

    ・Wordpressのwp-config.php内に
    define(‘WP_MEMORY_LIMIT’, ‘256M’);

    ・Wordpressのプラグインを全て停止

    など行ったのですが、下記エラーが出た状態でサイトが表示されません。
    Swapという方法も出ていたのですが、これはよくわからずまだ行っておりません。
    他に考えられる原因は何でしょうか?
    何がメモリに負荷を与えているのでしょうか?
    他に試すことはありますか?
    プラグイン以外の原因を特定する方法なども教えて頂けると助かります。

    Fatal error: Out of memory (allocated 235409408) (tried to allocate 32768 bytes) in /home4/~~~省略~~~/wp/wp-includes/pluggable.php on line 870

15件の返信を表示中 - 1 - 15件目 (全22件中)
  • 実際に動作時のメモリはどれくらい確保されているのでしょうか。

    echo ini_get('post_max_size');

    などで表示確認されてみていはいかがでしょうか。

    ありがとうございます
    64Mでした。
    これは変えられないのでしょうか?

    @msio

    post_max_sizeは文字通りPOST送信できるデータの最大サイズであり、Out of memoryとは無関係です。
    post_max_sizeの制限で出るエラーはWarning: POST Content-Length of 〜というものです。

    WordPressでメモリが不足する原因の多くはプラグインにあります。

    プラグインを無効にして、原因となるプラグインを特定してはどうでしょうか。

    また、原因は特定できたがどうしてもそれを使わないといけない場合や原因が分からない場合、サーバーの環境が分かりませんが、256Mではなく512Mなどにすることはできないのでしょうか?

    @munyagu さん
    そうですね。
    私のお話する内容が大きく的をはずれておりました。
    反省いたします。

    ありがとうございます。
    512Mにしても同じでした。
    またプラグインはFTPで名前を変更して全て停止したのですが、同じ「Out of memory 」で違うエラーになるだけという感じです。

    Fatal error: Out of memory (allocated 235409408) (tried to allocate 135168 bytes) in /home4/~~省略~~/wp/wp-includes/pomo/streams.php on line 110

    すみませんまた全く関係のない事であった場合大変申し訳ないのですが、表示テーマを変更されてもでますでしょうか。
    またエラーがでる対象のものは、ものすごく長い文章または正常時と比較して極端に短いのものや外部から取り込んだ文字データのものであったりはしないでしょうか。
    いずれも当てはまらない場合はお見逃しいただけると幸いです。

    > Fatal error: Out of memory (allocated 235409408) (tried to allocate 135168 bytes)
    って WordPressでは 256MBのメモリを許可しているが、実際には135KBぐらいつかったところで、メモリ不足になったってことじゃないでしょうか。つまりサーバーのメモリ不足じゃないかなと。

    WordPressにログインも出来ない状態なので、FTPで使用しているテーマの名前を変更してみましたが、変わりませんでした。
    プラグインもFTPでフォルダごと名前を変更して無効にしています。
    直前に、特別何かを行ったとかもありません。
    まだ半年くらいのサイトなのですが、17日あたりまでは普通に表示も作業もできていました。
    なので、おそらく文字データでは無いと思います。
    また、よくネットでも言われているプラグインの問題だけでは無いような気がします。

    メモリ不足の原因になっているものは、プラグイン以外だと何が考えられますか?

    @kimipooh
    そうではありません。
    235MB割り当て済みallocated 235409408で、135KB割り当てようとしたtried to allocate 135168 bytes、ということです。

    具体的に何をすれば良いと言ってますか?
    原因も知りたいのですが、最終的には問題を解決したいので。
    何かできることがあれば何でもよいので試してみたいのですが。

    何をすればいいとも言っていません。
    プラグインを全て無効化してテーマもデフォルトに戻しても改善しないとなると、私には分かりません。
    すいません。

    プラグインを停止されたあとに出ているエラーがテーマの動作内で、場所的に文章などの読み出し、整形部分ではないかと思いまして記事などの文字データが好ましい状態ではないのかもしれないと思いました。
    iniの変更した数値と実際の許容の数値が違っていたようなので、あらためて動作時にいくつメモリが利用可能であるか確認してみるのはいかがでしょうか。
    ini_get('memory_limit');
    こちらで動作時のメモリ容量が確認できます。目的の256Mになってらっしゃいますでしょうか。
    このかっこ内を変更するとiniの設定情報をみることができます。的確に必要分あげるにあたり検証確認等ができないためいろいろご自身でお試しいただけると幸いです。
    ちなみにPHPの中からini_setでその局面だけ設定を変更することもできます。

    ただ画像加工でもしないかぎりそれほどまでにメモリにのせることもないかと思いますし、同じようなエラーとして文字置き換えや正規表現でテキストを全文メモリにのせる際、セパレータの具合によっては簡単にメモリエラーになってしまうこともあります。
    もしかしたらなのですが正規表現で記事全文を一度に置き換え、改行を改行タグにしたりするとかいうタイミングでメモリマップに乗らない文字、縦改行や逆タブなどの文字がはいっているかもとか、置き換え対象がやたら多い文章などあるのでは、それかその文字列のサイズがマルチバイト計算の数量にあわない外国語であったりとかそういう可能性もあるのではと思いました。

    物理的にメモリまたはファイルが破損している可能性もないことはないと思いますが物理エラーの場合はもっと深刻なものがPHPの動作エラー以外ででることが多くサーバー管理の面から家庭用の機材なら別ですが機械本体からエラーがでるので考慮はしなくていいかと思います。

    もし私個人がそれらに対処するとしたら確認したいと思うところは
     実動作時の実質メモリ量
     ワードプレス本体のファイル確認 破損していないかなど
     記事データの内容の確認
    になります。これらで原因がはっきりしないときは最初からサイトを構築するかたちで現在のデータを再構築する検証をすると思います。
    なにかのご参考になりましたら幸いです。

    @munyagu さん
    > Fatal error: Out of memory (allocated 235409408) (tried to allocate 135168 bytes) in /home4/~~省略~~/wp/wp-includes/pomo/streams.php on line 110
    について
    >> 235MB割り当て済みallocated 235409408で、135KB割り当てようとしたtried to allocate 135168 bytes、ということです。 というご指摘、ご指摘ありがとうございます。となると 256MBのメモリを使い切ってしまったということですよね。

    暫定対応なら 512MBにメモリを増やす(サーバーのメモリが十分にあるならい)という手もあります。
    (とりあえずサイトを表示させるために)
    もちろん根本的にはそれほど巨大なメモリを何故つかうのかが問題ですけれども

    php.ini
    memory_limit = 512M
    とした上で
    define(‘WP_MEMORY_LIMIT’, ‘512M’);
    ですよね…

15件の返信を表示中 - 1 - 15件目 (全22件中)
  • トピック「他に「Out of memory 」を回避する方法」には新たに返信することはできません。