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

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

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

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

AWS(Amazon Web Services)

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

Q&A

解決済

3回答

1643閲覧

AWS上でWordpressを運営していますが、サイトが頻繁に停止する原因

JiulianusRyoh

総合スコア1

WordPress

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

AWS(Amazon Web Services)

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

0グッド

2クリップ

投稿2021/04/20 04:39

編集2021/05/07 08:08

###AWS上でWordpressサイトが頻繁に停止する原因

####環境:
LAMP ELB+EC2(t2.micro+30GEBS)
バーチャルホストで2つのサイトを作成。
現在アクセス数は1つのサイトは日に数百PV程度で、もう一つは不明ですが、数十PV程度かと思います。
URL:https://www.mobyinfo.com & https://news.mobyinfo.com

####現象:
月に数回の頻度で作動停止。AWSのコンソールに入って確認しますと、EC2が「実行中」と表示されても、サイトは無反応。EC2を「再起動」しても改善なし。EC2を「停止」してもう一度「開始」したら、サイトは「データベース接続確立エラー」になり、サーバーにログインして、手動でMySQLをStartしたら、サイトが回復します。

####原因究明:
AWSのCloudWatchを見たら、作動停止のタイミングは「EBS読み込み数」の急増と重なっています。しかもこの急増ぶりは普通のアクセス増には見えず、なにかの攻撃かと思います。
イメージ説明
イメージ説明
####とった対策:
DoS 攻撃を防ぐ「mod_dosdetector」をApacheに実装しましたが、改善していません。

####質問:
そもそもEC2かEBSのスペックが低すぎるためで、スペックを上げれば改善するものでしょうか。それともなにかの対策で解決できるものでしょうか。アドバイス頂けると助かります。

###アドバイスを戴いてからやったこと

下記2つのプラグインをhttps://www.mobyinfo.comにインストール
①Server IP & Memory Usage Display(サーバーヘルスチェック)
②Error Log Monitor(エラーログ)
③PHPメモリー上限を変更

####①ヘルスチェック結果
ヘルスチェック結果
不勉強でチェック結果の意味は理解しておりませんが、すべてのプラグインを無効化にして再チェックしてもエラーが消えません

####②4月26日と27日2日連続でサイト停止したエラーログ
AWSのCloudWatch記録
イメージ説明
このようなログは大量発生
イメージ説明

####③PHPメモリー上限を128M→512Mに変更

###その後の経過報告
5月2日と5日にサイト(実際はMySQL)はまた停止しました。AWSのCloudWatchで「EBS読み込み数」が急増しました。
イメージ説明
エラーログを調べました。5月2日と5日この2回の停止はDoS攻撃によるもののようです。
エラーログ

####対策:
ローカルの何かの処理の暴走による攻撃とのご指摘とアドバイスを受けて、IPv6を無効化しました。しばらく様子を見ます。

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

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

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

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

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

mike2mike4

2021/04/22 14:49

>バーチャルホストで2つのサイトを作成。 これt2microでやるの無理があると思うんですが
JiulianusRyoh

2021/04/23 01:38

アドバイスいただきありがとうございます。1つ上のものに切り替えて試してみます。
guest

回答3

0

これだけでは「停止時にEBSの読み込み数が大きく増加している」という事実だけで、原因がわかりません。
また、mod_dosdetectorを入れたところでDOSが原因なのかも特定できていないので効果を期待する段階でもないでしょう

なので、やるべきことは調査です。

しかもこの急増ぶりは普通のアクセス増には見えず、なにかの攻撃かと思います。

DOSが原因なのだとしたらPVが急増してるはずですし、他のものが増えていないのにEBSの読み込み数だけ増えてるのも不自然です。
アクセス増なのか判断できる材料がないこれだけでは判断する根拠が薄いです。
まして、定期的に発生するのであれば個人的にはサーバ内でなにかの処理がボトルネックになっている可能性が高いと考えます。
今度同じ事象が発生したときに

  • 必要以上に発生しているプロセスはないか
  • メモリ使用率等、他のリソースにに問題はないか
    • 問題があるならどのプロセスがそのリソースを使用しているか
  • 普段は発生していないがその時だけ発生しているプロセスはないか
  • 普段はないような不審なアクセスは発生していないか
    • Wordpressへのアクセスの他、知らないアクセス元からサーバログインされていないかなど

等をサーバ内に入って調べてください。
情報がないことには判断できません。

EC2を「停止」してもう一度「開始」したら、サイトは「データベース接続確立エラー」になり、サーバーにログインし手、手動でMySQLをStartしたら、サイトが回復します。

こちらについてはMySQLを自動起動する設定を入れていないのが原因だと思われるので、設定を追加してください

bash

1sudo systemctl enable mysqld

投稿2021/04/20 06:48

yu_1985

総合スコア7586

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

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

退会済みユーザー

退会済みユーザー

2021/06/11 09:53

> EBSの読み込み数が大きく増加している グラフのスケールを見る限り、誤差レベルな気がします。
guest

0

自己解決

最後の対策してから1か月たちました。途中5XXエラーが頻発したため、5月13日にEC2を1つ上のものにスケールアップしました。それ以来、エラーはでていますが、サイトが死んだような事態は発生しませんでした。
AWSのCloudWatchで「EBS読み込み数」の最後の急増(サイト死亡)は対策前の5月5日で、その後は発生していません。
イメージ説明
5XXエラーは最後の対策後も数回発生しましたが、いずれもメモリアウトで、EC2のスケールアップ後少なくなりました。
イメージ説明

結局、メモリが足らなかったのが主な原因かと思いますが、スケールアップ前の各エラーの原因は今一つ理解できておりません。皆さまのアドバイスのおかげでとりあえずサイトは安定しております。再度感謝の意を表します。

投稿2021/06/11 07:44

JiulianusRyoh

総合スコア1

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

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

AbeTakashi

2021/06/11 09:01

解決されて何よりですが、そのPV数でメモリが足りなくなるのも不思議というか。よっぽどWEBサイトで特殊なことをしてない限りはt2.microでも問題ないとおもうのですけれどね。何がトリガーとなってメモリをいっぱい使ってしまうのかは早めに見つけておくといいかもしれません。今後さらにPV数増えたらまたスケールアップしないとなりませんし。
yu_1985

2021/06/11 09:44

メモリが足りないというのは結果であって、スケールアップは暫定対処ですね。 実用上はまあよくある話ですが、書かせていただいたように何が原因でメモリをそんなに使用しているのかをもうちょっと調べたほうが長期的にはよいでしょう。 「DOS攻撃によるもの」と断定しているのもちょっと違っていて、正確には「dosdetectorがログにエラーを出していた」です。ループバックアドレスなので誤検知ではないかと思いますけど。 また、実際にはELB配下にあるのでX-Forwarded-Forを見ないとELBのIPばっかり見ちゃうことになりますけど、そこはちゃんと設定しましたか、など。 つまるところ、既に書いたことと同じで理解するためには調査が必要です。
guest

0

とりあえずt2.microから一つ二つ上に切り替えてテストしてみると良いかもしれませんね。あと、swapの設定も合わせて確認して、メモリが増えた分を加味して適切な設定をするとより安全かもしれません。

投稿2021/04/22 03:57

編集2021/04/22 03:57
AbeTakashi

総合スコア4824

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

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

JiulianusRyoh

2021/04/23 01:36

アドバイスいただき、ありがとうございます。スペックに無理がありますね。試してみます。
AbeTakashi

2021/04/27 15:08

warningはとりあえず無視するとしても、メモリのエラーがちょくちょくでていますよね。 https://illc-next.com/blog-diary/php-memory-limit-wordpress この辺見て調整してみるとどうでしょうか? サーバのスペックアップも合わせて検討すべきでしょうが。スペック上げたくないのであればメモリを使う処理がどこかにあるので、それを探して削除するしかないでしょう。非推奨の変なプラグイン入れてないかとか?
JiulianusRyoh

2021/04/29 06:42

アドバイスいただきありがとうございます。いまphpメモリーの上限を128M→512Mに変更してみました(ヘルスチェックプラグイン上では256Mですが、php.iniをみたら128Mでした)。EC2のスペックアップまで、しばらく様子を見ます。素人でPHPメモリーの使用率調査の仕方は分かりませんが、勉強してみます。
AbeTakashi

2021/04/29 09:39

PHPのメモリ上限が上がっていれば、ログに出ていたエラーは出なくなるか減るとは思います。ただ、サーバのメモリがたしかmicroプランだと512MBでしたので、PHPがメモリを多用した場合はスワップが発生して遅くなったり、場合によってはOOM Killerが走ってhttpdのプロセスごと落ちる可能性もあります。個人的な感覚ですが、ここまでメモリを上げてもそのようなエラーが出るなら、やはりWordPress側で何らかの不具合が発生してる気がします。WordPressやプラグインのバージョンを最新に上げてみる、プラグインを外してみるなどの対策を取った方が良さそうです。
JiulianusRyoh

2021/05/03 14:40

2日経ってまた同じ現象が起こりました。メモリーが足らないことと、EBSとの相性も悪いのかなと勝手に推測しております。次はRDSへの切り替えをトライしてみます。いろいろ教えていただき、大変勉強になりました。結果がありましたらまたご報告します。
JiulianusRyoh

2021/05/06 02:44

今回の停止はDoS攻撃によるものと推測しております。RDS移行とともにDoS攻撃対策をもう少し考えておきます。
AbeTakashi

2021/05/06 11:15

dosdetectorのログのデータを見ましたが、クライアントが"::1"で、これってループバックアドレスですよね?(私はIPv6詳しくないのでなんともですが) となるとこれはDOS攻撃というよりはローカルの何かしらの処理が暴走してるとかじゃないですかね? 試しにサーバのIPv6を無効にしてみるとどうでしょう?
JiulianusRyoh

2021/05/07 05:03

なるほど、謎の攻撃は自分から仕掛けた可能性はあるということですね。IPv6を無効化しました。しばらく様子を見て、状況をご報告します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問