【AWS】【WordPress】「504 Gateway Timeout Error」の原因

AWS上でWordPressを構築していて「504 Gateway Timeout Error」になりました。

調べてみるとALBのターゲットグループのEC2のステータスがunhealthyになっていました。つまり、ALBからEC2インスタンスへの接続がタイムアウトしているわけで、ALBとかドメイン、証明書などではなく、直接的な原因としてはEC2インスタンスの方にありそうだということが分かりました。

EC2インスタンスにログインしてみると

$ service httpd status

httpsプロセスが死んでそうでした。

さらに /var/log/messageを見てみると怪しげなログが・・・。

Apr  2 09:29:31 ip-172-31-19-188 kernel: [ 4430.817719] httpd invoked oom-killer: gfp_mask=0x14201ca(GFP_HIGHUSER_MOVABLE|__GFP_COLD), nodemask=(null),  order=0, oom_score_adj=0
Apr  2 09:29:31 ip-172-31-19-188 kernel: [ 4430.820420] httpd cpuset=/ mems_allowed=0
Apr  2 09:29:31 ip-172-31-19-188 kernel: [ 4430.821403] CPU: 1 PID: 6325 Comm: httpd Not tainted 4.14.106-79.86.amzn1.x86_64 #1
Apr  2 09:29:31 ip-172-31-19-188 kernel: [ 4430.823127] Hardware name: Amazon EC2 t3.micro/, BIOS 1.0 10/16/2017
Apr  2 09:29:31 ip-172-31-19-188 kernel: [ 4430.824551] Call Trace:
Apr  2 09:29:31 ip-172-31-19-188 kernel: [ 4430.825155]  dump_stack+0x5c/0x82
Apr  2 09:29:31 ip-172-31-19-188 kernel: [ 4430.825924]  dump_header+0x94/0x21c
Apr  2 09:29:31 ip-172-31-19-188 kernel: [ 4430.826735]  ? get_page_from_freelist+0x525/0xba0
Apr  2 09:29:31 ip-172-31-19-188 kernel: [ 4430.827777]  oom_kill_process+0x223/0x420
Apr  2 09:29:31 ip-172-31-19-188 kernel: [ 4430.828664]  out_of_memory+0x296/0x4c0

どうやらサーバーのメモリが足りなくなってout_of_memoryし、oom-killerがhttpdプロセスをkillしたように見えます。つまり根本原因としてはサーバーのメモリ不足が考えられます。

なぜメモリが不足しているのかという部分に関しては過去に

[kanren postid="3778"]

攻撃を受けていて、メモリが枯渇したということがあったので調べてみましたが、怪しそうな攻撃の痕跡は残っていませんでした。

そこで今回、t2.smallからt3.microにインスタンスタイプを変更してメモリが2Gから1Gに減ったということもあったのでswap領域を増やすことにしました。 本当はt3.smallとかにスペック上げればいいってのはあるんですが、コストが2倍くらいになるし、昨日1年分のRI(リザーブインスタンス)買っちゃったんでなんとかこれで凌ぎたいという思いです・・・。

AmazonLinuxにswapを作成する。

$ free -m
             total       used       free     shared    buffers     cached
Mem:           959        821        137          0          7         78
-/+ buffers/cache:        735        223
Swap:         2559          8       2551

これでしばらく様子をみてみたいと思います。

[kanren postid="8918"]