質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

MediaWiki

MediaWikiは、Wikipediaを運営するウィキメディア財団が開発するコラボレーションツールです。複数ユーザーによるコンテンツ管理機能を備えるなど、Wikipediaと同じ操作性や編集機能を持ちます。PHPで記述されており、MySQLやPostgreSQLをデータベースに使用できます。

Q&A

解決済

1回答

4858閲覧

Amazon Linux 2 で WordPress などのアプリが Out of memory

lin.ming

総合スコア50

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

MediaWiki

MediaWikiは、Wikipediaを運営するウィキメディア財団が開発するコラボレーションツールです。複数ユーザーによるコンテンツ管理機能を備えるなど、Wikipediaと同じ操作性や編集機能を持ちます。PHPで記述されており、MySQLやPostgreSQLをデータベースに使用できます。

0グッド

0クリップ

投稿2020/05/27 07:02

編集2020/05/27 11:15

Amazon Linux 2 に cloudwatch agent をインストールして(yu_1985 さん、ありがとうございました)、メモリを監視しながら WordPress の操作をしました。

トップページや個別記事を見る時は大丈夫なのですが、管理画面に入って、例えば「サイトネットワーク管理 - ダッシュボード」などを選択すると、画面に Out of Memory が表示されます。

以下のようなメッセージが出ます。

Fatal error: Out of memory (allocated 2097152) (tried to allocate 20480 bytes) in /data/linming/wordpress/wp-includes/sodium_compat/src/Compat.php on line 2279 Fatal error: Out of memory (allocated 2097152) (tried to allocate 32768 bytes) in /data/linming/wordpress/wp-includes/version.php on line 1

エラーのでる箇所は様々ですが、どれも Fatal error: Out of memory です。

CloudWatch のメトリクスでメモリ使用率が 10-20% の時でもエラーが発生します。

CloudFront をかましているから正確にはどんな状況で発生するか調べきれてないですが、各ブログのダッシュボードには遷移できる時もあればできない時もあり、ひどい時は個別投稿へのリンクをクリックするとエラーになる時もあります。

MediaWiki でも、ページが表示されたり、500 エラーになったりします。

静的 html ファイルの表示は大丈夫です。

今はコンソールに潜れなくてバージョン等を調べれないのですが、
WordPress, MediaWiki, PHP, Apache ともに今年初頭のバージョンです。PHP, Apache は amazon-linux-extras でバージョンアップしました。

ダッシュボードに「5.4.1 にバージョンアップしましょう」と表示されるのですが、リンクをクリックすると Out of Memory です。

EC2 のインスタンスタイプは t2.micro です。

原因と対策法はなんでしょうか?

##追記
/etc/php.ini を見たところ、memory_limit = 512M でした。
インスタンスを再起動して WordPress のバージョンアップをクリックしたところ、

Fatal error: Out of memory (allocated 31719424) (tried to allocate 32768 bytes) in /data/pocolog/wordpress/wp-content/plugins/amazon-polly/vendor/aws/aws-sdk-php/src/data/translate/2017-07-01/api-2.json.php on line 3 Fatal error: Out of memory (allocated 31719424) (tried to allocate 32768 bytes) in /data/pocolog/wordpress/wp-includes/pomo/streams.php on line 163

と表示されました。
31,719,424 byte = 31MB ですよね?
CloudWatch agent のメモリ使用率は 92.7% まで上がっていました。
PHP のバージョンは 7.1.33、Apache のバージョンは 2.4.34 です。

SWAP ファイルは以下のように作りました。

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 sudo mkswap /swapfile sudo swapon /swapfile

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これはPHPのエラーなので、php.iniなどで最大メモリを増やす必要があります。

teratil内でも多数同じ質問がありますので、まずはこれらを読んで試してみてください。

投稿2020/05/27 08:51

tanat

総合スコア18716

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanat

2020/05/27 09:38 編集

システムのSWAPをきちんと設定しておけば、PHP側は無限に設定してしまっても極端に重くなるだけで止まりはしないはずです。 システムのSWAPが存在しない場合は下手にPHP側を無限にすると、OSからプロセスが殺されてしまうのでご注意ください。
lin.ming

2020/05/27 11:13

ご回答ありがとうございます。 質問文に追記しました。 ご確認ください。
tanat

2020/05/27 11:27

1. phpinfo()等でmemory_limitが正しく効いているか確認してみてください 2. 1のあと、とりあえずmemor_limitを-1(無限)に設定して試してみてください
lin.ming

2020/05/27 11:43

phpinfo() で 512M でした。
lin.ming

2020/05/27 11:47

memory_limit = -1 にしましたが、やはり Out of memory が出ます。
tanat

2020/05/27 11:52

質問に書かれているエラーは複数行ありますが一回のリクエストで出ているものですか? Fatal error: Out of memory (allocated 31719424) (tried to allocate 32768 bytes) in /data/pocolog/wordpress/wp-content/plugins/amazon-polly/vendor/aws/aws-sdk-php/src/data/translate/2017-07-01/api-2.json.php on line 3 Fatal error: Out of memory (allocated 31719424) (tried to allocate 32768 bytes) in /data/pocolog/wordpress/wp-includes/pomo/streams.php on line 163
tanat

2020/05/27 11:57

切り分けとして一番簡単なのは 一時的に大きなメモリを持つインスタンスに切り替える→うまくいったら仮想メモリサイズが足りなかった 上手くいかない→設定で見直すべきところがある と言う感じになるかと思います。 無料枠では無いですが、t2.xlargeで1時間で20円くらいなので試してみることをお勧めします。
tanat

2020/05/27 12:08

あと思いつくのは、 1. wp-config.phpでも設定してみる https://webty.jp/staffblog/production/post-178/ 2. swapが若干足りない気もするので(通常であれば普通のサイズだとは思います)10GBくらいで設定してみる あたりでしょうか。
tanat

2020/05/27 12:15

あとは、エラーが出る画面にアクセスするときにfreeコマンドを打ち続けるとメモリの推移がリアルタイムに近い状態でわかるので、実際にメモリが足りなければ把握できます
lin.ming

2020/05/28 05:03

swap file を 2GB にして試してみました。(t2.micro のハードディスク容量が 7GB)ですから。 Out of memory は出なくなりました。swap file が効いているようです。(top コマンドで確認しました) しかしながら、管理画面に行くと Chrome にリダイレクトしまくっていると怒られるようになりました。 (インスタンスを t2.xlarge にして試した時と同じ症状です) EC2 とインターネットの間に CloudFront かましているので、その間でリダイレクトしている感じです。 この件は新たに起票します。 ご回答ありがとうございました。
tanat

2020/05/28 05:09 編集

swapが足りなかった感じですね。 解決してよかったです。 EBSはディスク容量とディスクの速度に密接な関係があるので、完全に無料枠に抑えたいという事情が無い限りはある程度のサイズを確保することをお勧めします。 また、CloudFrontはEC2単体で動くようになってから設定し 管理画面は除外するなどのチューニングをする方が良いですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問