BeansTalkで用意したELBが毎時XX分に504エラーを返す

前提条件

  • BeansTalkを使用している
  • ELBを使用している
  • Apacheを使用している
  • logrotateを使用している

毎時XX分に一瞬リクエストが ELB 504 になることがあります。複数のリクエストがある中で1,2リクエストのみ起きるような状況でした。

同じタイミングで起きているな、と気がつけるかどうかが判断の分かれ道です。

同じタイミングで504が起きるのがわかると、rotateとかの定期実行処理が怪しそうだなと推測できます。

https://forums.aws.amazon.com/thread.jspa?messageID=683337

のフォーラムに話題が上がっていましたが、結果的にはlogrotate後に「reload」ではなく「graceful」にすることで解決するようです。

reload と graceful の違いはこちら。

http://www.goofoo.jp/2011/11/1498

.ebextensionsのconfigファイルで

01-update-logrotate-httpd:
    command: sed -i -e "s|reload|graceful|g" /etc/logrotate.elasticbeanstalk.hourly/logrotate.elasticbeanstalk.httpd.conf

のようにしてあげると postrotateがreloadからgracefulに変わります。

/var/log/httpd/* {
size 1
missingok
rotate 5
compress
notifempty
dateext
dateformat -%s
sharedscripts
delaycompress
create 
postrotate
    /sbin/service httpd graceful > /dev/null 2>/dev/null || true
endscript
olddir /var/log/httpd/rotated
}

rotateするのを確認した上で切り替えるとよさそうです。