元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

yum updateしたら、nokogiriがエラーを吐いてサービスが停止した。

Nokogiri.png

不覚。

クライアントから連絡が来て、障害発覚。

godで動かしていたrails scriptが再起動後起動に失敗していた。

[ec2-user@app-production-001 current]$ sudo service app-god status
delayed_job:
  delayed_job-0: start
  delayed_job-1: start
  delayed_job-2: up
  delayed_job-3: start
  delayed_job-4: start
mail_queue_server:
  mail_queue_server-0: start
  mail_queue_server-1: start
  mail_queue_server-2: start
  mail_queue_server-3: start
  mail_queue_server-4: start

起動リトライを延々と繰り返してた。

[ec2-user@app-production-001 current]$ bundle exec rails c production
/usr/local/rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/activesupport-3.2.XX/lib/active_support/dependencies.rb:251:in `require': liblzma.so.0: cannot open shared object file: No such file or directory - /usr/local/rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/extensions/x86_64-linux/2.1.0-static/nokogiri-1.6.0/nokogiri/nokogiri.so (LoadError)

心当たりは前日行ったyum update

nokogiriを再ビルドしたら復旧した。

[ec2-user@app-production-001 current]$ sudo gem install nokogiri -v=1.6.0
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.6.0
Parsing documentation for nokogiri-1.6.0
Done installing documentation for nokogiri after 3 seconds
1 gem installed

こういうのもあるのか。

今日の教訓

  • パッケージの更新は慎重に。予想外のところで依存関係の問題が発生することも
  • ステージングサーバでちゃんと試す
  • godでdaemonizeしたプロセスについても、繰り返し起動に失敗するようなら検知できるようにする