トラブルシューティング

新年明けてからトラブルが多発しました。

あぐりログの利用者数の増大に合わせて、サーバのチューニングは行ってきましたが、先般の19日には、半日以上アクセスしにくく更にデータ更新も遅延するという状況に陥りました。
復旧に至ったのは、日付変更線を超えた頃になってしまいました。
単純には、ユーザが増え、それに合わせて接続するログBOXが増えて、それぞれのアクセス量が増えたということで、サーバが忙しくなったということなのですが。
そういった想定を超えて、サーバの負荷があるタイミングで急激に増大するという事象に遭遇したのが今回のトラブルでした。

何が起きていたのか。。

あぐりログでは、ハウスの環境をモニタリングするために逐一ログBOXは計測した環境データをサーバに送信しています。
ログBOXは、定期的にその送信を行いますので、台数の増大は、その送信する処理が一斉に行われることに繋がります。
あぐりログのクラウドサーバにとっては、所謂DoS(Denial of Service attack)が行われているような状況になります。
しかし、自分で自分のサービスをダウンさせる訳には行きません。。
# 今回は、それに近い状況に陥ったのですけど。(-_-;

なので、ログBOXは、自ら一斉に送信を行わないように自立的に所定の時間範囲にばらついて送信を行うようにしています。
個々の送信が正常に行われている間は、これで問題なく稼働していたのです。
しかし、幾つかのログBOXがサーバに送信する際に、サーバへの接続ができない時もしくは何かしらのエラーで送信できなかった時、

 送信を再度試行(ログBOXに溜まっているファイル数分)

するように動いていました。
ちなみに、ログBOXは、送信できなかった時、そのデータを蓄積し次回の送信時に合わせて送信しようとします。

これが、連続的なサーバへの接続動作をおこし、サーバの受け口が空く時間帯の減少につながって行き、それが他のBOXがサーバに接続することを阻害する要因となり、最終的にサーバはログBOXからの接続要求に応える事ができなくなってしまいました。
これは、グラフなどの閲覧サービス側にも接続しにくい状況を生み、閲覧できたデータがなかなか更新されないことでのリロード操作の多発ということでサービスが停滞する状態に陥った次第です。

どう対処するか

この状況は、自立的に稼働するログBOXとサーバ側の設定のアンマッチが引き起こしている事態ではありますが、サーバ側としては、アクセスしてくるログBOXの動作をコントロールすることができません。
なので、ログBOX側でサーバへの連続的な接続動作を行わないような見直しが必要であるという所に行き着きました。

しかし、400台を超えるログBOXのソフトウェアをどうやって一気に入れ替えるか。。。。
という問題に置き換わってしまったのですが。
実は、あぐりログでは、遠隔でメンテナンスが可能なようにしていることがこの対処に効果を発揮しました。
昨年から、fabric というデプロイツールを活用してログBOXの更新を実施していて、これを活用して問題を引き起こしているファイルを一気に置き換えることで収束の道筋に乗ることができました。
# ただ、それでも400台となると一気といっても2時間くらいかかりましたから、、更新するファイルが大量になるとこれも厳しいです。

まだ終わっていません

サーバ運用として安定する方向に舵を切れましたが、まだ、サーバ設定に無理がある事も見えてきましたので、それらの修正も行っていきます。
更に新たな問題も指摘されていますので、これらにも対応していかないといけません。
ちなみに、一つの例としては、

夜中の3時頃に来るはずのないアラートが飛んでくる

という問題の連絡を頂いています。
以前には発生していなかった問題であり、これもログBOXの台数増加に伴う事象と思われます。
現在調査中です。

他にも

あぐりログは、WebサービスでありスマフォやPCのブラウザで閲覧利用頂いていますので、その操作に伴うトラブルや、機種変更した際のトラブル、ログBOXに搭載されたセンサーの計測値が他に導入している計測機と異なる問題など色々と受け付けています。
これらも、一つ一つ解決していくよう努めて行きます。

今後とも宜しくお願い致します。