ネットワークを可視化して同時接続ライセンスのコストを削減した話
継続的にパケットを収集して問題解決に役立てるネットワークのドライブレコーダー、ソナーマンを開発しております。
日々様々な会社に営業をかけているのですが、ネットワークの分析をすることで何が出来るのか、具体的な事例を知りたいというお客様がいらっしゃいます。
現在進行形の話はとてもしにくいので、ご参考までにまた過去のお話をしたいと思います。
起きていた問題
今回お話しするのは、同時接続ライセンスの実態分析によるコスト適正化です。
あるデータベース関連製品(使用プロトコルはTCP)には同時接続ライセンスがあり、ユーザーの使用中、同時接続数をオーバーしていますという警告とともにクライアントPCからの新規接続が遮断されるという問題が度々発生していました。
同時に接続している人が多いから発生するのだろう、とまあ普通は思いますよね。エラーメッセージにもそう書いてあります。
しかし、ここでネットワークの低レイヤを理解し、自分でソケット系のプログラムを書いたことがある人の目線で見ると、何をもって同時接続とみなすのかというのはじつは様々な解釈があり得る実装です。
トランスポートレイヤのプロトコルであるTCPには状態遷移という概念があり、サーバプログラムはTCPコネクションの状態を管理しています。
この状態管理が実態を反映しないケースというのがあり、まず現状の利用状況を可視化することが必要だと考えました。
TCPプロトコル上における手順や状態の取り扱いはOSやアプリケーションに依存するため、一般的にどうするのが普通、とは言いにくいモノなのですが、自社でよく使われているパソコンなどとの相性に問題がないかというレベルで調査が必要なケースがあります。
可視化の結果、ライセンスが足りないのであれば、現実の数字とともに稟議を上げて買い増し、無駄に使っているのであれば適正な状態にするための方策を練るべきだと考えました。
やったこと
サーバにつながるL2スイッチのポートをミラーし、パケットを収集して継続監視を行うことにしました。
同時接続数オーバーのエラーがログに記録されることをトリガーに発生時間を確認し、その前後でサーバのTCPコネクションがどういう状態だったかを蓄積されたパケットキャプチャから追跡調査しました。
結果
そこで明らかになった事は以下の通りです。
予想通り、厳密な意味での同時接続オーバーの状態は存在していなかった
TCPコネクションが明示的な終了手続きを経ずに通信が中断されており、サーバ側でタイムアウトになっていなかった(接続カウントが残る)
TCPコネクションがFINやRSTなどで正常終了しない原因は不明(VPNの切断や会議室移動時のWiFiローミング、手動によるLANケーブルの取り外しなどが原因だと推測される)
対策
ここで対応策を考えました。
TCPコネクションの初期化を行うのであればネットワークインターフェースのUP/DOWNが楽ですが、今回はサービス側の同時接続カウントのゼロリセットが必要です。そこで、製品のネットワーク管理機能を含むプログラムを特定し、プロセスの定期的な再起動(夜間)を行うプログラムを作成しました。使用状況とライセンス数の関係から一日一回のプロセス再起動で十分カバーできると試算しました。
結果
この対応により、同時接続数エラーのクレームが激減し、情報システム部門(情シス)の心配事が一つなくなりました。
情シス側で対策プログラムを仕込み、試験運用をしていたのですが、「エラーが減った」ということについてはユーザーは気付いて教えてくれません。
「最近、同時接続数のエラーは出ているか?」をユーザーに問い合わせて、エラーが減っていることの確認と、情シスが対応して根本原因をなくしたのだという事実をユーザーにも知ってもらわなければなりません。
黙って解決するというのはカッコいいかもしれませんが、意外とこういうクレームに対するフィードバックとアフターケアがユーザーとのコミュニケーションとして重要だと考えています。
まとめ
製品の利用状況を可視化し、ライセンスの適正管理を行うことで、無駄な発注を抑制することが出来ました。
アプリケーションのログをただ見るだけでなく、その裏にある仕組みを理解した上であるべき姿を考える事が出来るといいですね。
ユーザーから上がってきたクレームについて、きちんと対応したことをユーザーにも認識してもらう事が大事だと思います。ダラダラと苦労話をする必要はありませんが、ここまで考えてやっているのだということは折に触れて見せるようにはしていました。
ユーザーが及びもつかないレベルで問題解決をしていることが伝われば、緊急時に情シスの指示がスッと通ります。
コンピュータは動作メカニズムをどこまでも追えるという、自然界にはあまりない性質を持っています。無限に追うべきだといっているわけではないですが、頑張って追うと苦労が報われる瞬間があります。
特にコンピュータ同士の通信に着目して記録を取るドライブレコーダーはシステム運用において劇的なイノベーションとなりうる可能性を秘めています。
CM
最後に弊社のCMをご覧いただければ幸いです。
パケットを読んで何かを判断するには専門知識と経験が必要ですが、弊社の経験豊富なオペレーター(たぶん僕)が支援します。