|
あるお客様の本番機(Solaris9)で、プロセスとしては存在しないが、
TCP上でbindできる奇妙なプロセスが存在し続けるという現象が発生しました。
ps コマンドで叩いて確認したわけではないのですが、おそらく defunct とも表現されていない、
すなわち zombieでもない存在のようです。
技術的には、OSが、Socketの Garbage Collection に失敗したと思われ、
結果として、サーバ側Socketにbindはできるが、プロセスとして存在しないので、
Socketエラーを異常なタイミング返送してくる存在で、Stealth Process
とでも言いましょうか。この Stealth processが1ヶ月に一回くらい発生します。
実際には、当該プロセスはバッチなので、処理終了後 kill しているのですが、
プロセスはkill されたが、PortがFIN_WAIT2などになったままで
GCされていないプロセスだと思います。
いずれにせよ、結果としてNextra製品で対応しました。
こんな異常ケースに対応する Middlewareは Nextraだけだと思いますが。
これも全て、「落ちても安心な」仕組みを提供するとの公約を果たすためです。
世の中に絶対落ちないシステムはありませんが、落ちても問題のない
仕組みを提供することは可能です。
こういった細かい改善は、11年間、数え切れないほどやってきました。
どんな問題も解決してきました。
ですので、万が一、新規お客様導入で、何か問題があった場合は、
必ず解決できる自信はありますし、ほぼ100%、OS、TCP/IPの問題に起因しています。
Nextraの熟成度はお客様に聞いていただければわかると思います。
大前研一張りに言えば、世の中に解決できない問題など存在しない
ということです。これは、システムにおいても同じで、Application Layer より
下層に位置する問題は、ApplicationとTCPの間に存在するMiddlewareで
解決するのが一番となります。
|