2月の昼下がり、業務であたふたしているところに Slack 経由で Zabbix から不穏な通知が
うげげ、ブログ死んでるやん。。。。
でも大丈夫。 Beanstalk で稼働してるので、コンソールからアプリケーション再起動すれば OK の簡単なお仕事です。
関係ないですが、 Beanstalk って Beans + talk かなーとか適当に思ってたのですが、 Bean + stalk (茎)で豆の木って事のようですね。
それはさておき、取り敢えず誰かがやらねばブログが落ちたままです。
全世界のタグバンブログ読者から苦情が来てしまいます。
なので早速再起動するもひきつづき Beanstalk のヘルスチェックが通らず、コンソールの画面が真っ赤に。
ログを見てみます。
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.10.RELEASE)
ほいほい。イイヨー?イイヨイイヨー
(中略)
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
ひょえ!?
タグバンガーズのブログは WallRide という 自社製 CMS で作られていて、これが Spring Boot なアプリケーションなのですが
どうもサーバが落ちた際に何か起きたのか Boot 内蔵の tomcat が起動しなくなってしまった様子。
更にログを追います。
Caused by: org.hibernate.search.exception.SearchException: HSEARCH000103: Unable to initialize IndexManager named 'org.wallride.domain.PopularPost'
どうやら hibernate search のインデックスが何やら壊れているのか、 IndexManager が初期化できなかったとのこと
で、アプリが起動できず tomcat も起動されなかったよう。
や、いやいや、ま、まだまだ大丈夫です。
多分、index ファイルが EC2 のどこかにある Lucene のディレクトリの中に格納されていて、
データの書き込み中にロックが掛かったままサーバが突然落ちた事によって、ロックされっぱなしになっている。。。んじゃないだろか!?
※ 悲観ロック、楽観ロック
ただ結果から言うとインデックスは WallRide の場合 DB に持っているので、EC2 の中を探せど探せどそんなファイルはなく。
DB の特定のテーブルを DROP して再起動 → 再 indexing する事で解決するだろうとの事。
↑ ISPN から始まるテーブルを全てDROPする。
ということで実施してみたところめでたくヘルスチェックが緑に。
恐らく解決したと思われるので試しにブログ投稿してみました。
それではみなさま、ころなにお気をつけて元気におすごしくださいね!