EC2上のdockerリソース枯渇問題を対策する【AWS】【wordpress】

wordpressアイキャッチ画像

・wordpressのメモリを上げたい
・dockerで割り振られているメモリを確認したい
・EC2インスタンスのタイプ変更

調査1:コンテナ毎のリソース確認

サーバーがダウンしてしまったので、障害発生直前の情報しか取れていませんが、リソース使用率は下記の通りです。

docker stats
docker stats実行画面

ちなみにdockerはデフォルト設定の場合リソースの利用に関して制限がありませんので、ホストカーネルのスケジューラーが割り振るリソース分だけ利用できます。

おそらく割り振られたリソース全て使用しているように見えるので、今度はサーバーの方を確認しましょう。

調査2:EC2インスタンスのモニタリング確認

EC2のダッシュボードに移動し、EC2インスタンスのモニタリングを見てみます。

CPU使用率グラフ

CPU使用率が100%以上使用して、サーバーダウンしていますね…。

インスタンスタイプがT2の場合、CPU使用率にベースラインというものが設定されており、ベースライン以下の使用率の場合、未使用のCPUリソースがCPUクレジットという形で蓄積されます。

逆にベースライン以上のCPU使用率以上のCPUを使用する場合はCPUクレジット消費してCPU使用率を100%まで増やすことができます。
※1CPUクレジット消費の計算方法は下記のリンクを参考にしてみてください。

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html#earning-CPU-credits

ちなみにEC2インスタンスベースライン使用率は以下のとおりです。

T2インスタンスのCPU使用率

ただ、今回の場合CPU使用率が100%以上使い切っているように見えるので、バーストクレジット云々ではなく、リソースを増やす対策、またはCPU使用率を上げている原因特定が必要そうです。

今回はdocker logsから原因探ったのですが、これという原因が見つからなかったのでインスタンスタイプを変更してCPUコア数を増やそうと思います。
※元々1つのサーバーにweb/ap、DB、phpMyAdminコンテナが同居している状態でしたので、この気にインスタンスタイプを変えてしまいます。

T2→T3へインスタンスタイプの変更

インスタンスタイプの変更は下記の記事を参考にしてみてください。

http://43.206.224.155/2023/09/14/ec2%e3%82%a4%e3%83%b3%e3%82%b9%e3%82%bf%e3%83%b3%e3%82%b9%e3%82%bf%e3%82%a4%e3%83%97t2%e2%86%92t3%e3%81%ab%e5%a4%89%e6%9b%b4%e3%81%99%e3%82%8b%ef%bc%88%e5%85%a8%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89/

wordpressメモリ拡張

次にwordpressのメモリを拡張していきます。

まず、メモリの割り当てですが、今回の上限である「924.9MiB」まで拡張します。このメモリ拡張はwordpress側のファイルを修正する必要があります。

サーバーにSSH接続しhtml配下のwp-config.phpのファイルに下記のコードを追加してください。

/** PHP memori */
define('WP_MEMORY_LIMIT', '924');

上記の対応でひとまず、サーバーダウンはしなくなりました。
誰かの参考になれば幸いです。