前提条件
- 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するのを確認した上で切り替えるとよさそうです。