今回は、普通の方々にはわけわからない内容です(^^;
記録と備忘録で投稿です。
2週間ほど前、工場の生産サーバでトラブル発生
生産設備がサーバアクセスするタイミングで固まる
そしてSQLへのConnectionのタイムアウトが頻発
これは、どうしようも無い…生産を一瞬とめてサーバの再起動を実施
だが、これが異常に時間がかかってしまう…
定時直前だったので当日の生産を打ち切り、IT部門と一緒に原因調査を実施
CPUとメモリは利用率20%程度で余裕。
マウントされているストレージの残量も50%程度で余裕
だけど、HDD負荷が常時100%でしかもレスポンスタイムが酷い
さらにI/O速度が0kB/secなのに負荷が100%になることも…
↓古いファイルを圧縮させながら領域を解放している所
SQLのSlowQueryのLOGを確認したが、ID指定で1レコードのUPDATEとか
INSERTで20レコード追加の処理がLOG上に散見している。
こんなの一瞬で終わる処理なのに…
ディスクのファイル数とかフラグメントでレスポンスが落ちているのだろうということで
生産LOGのデータを圧縮してファイル数を減らしてみるが焼け石に水
ディスクアクセスを見て見ると、ディスククリーンアップが走っている。
こんなの走ったら、もっと遅くなる…プロセスを停止したら少しはマシになった。
普通は、この処理はサーバーでは自動実行するものじゃないのだけども?
確認したら、WindowsServer2016から、ログオン時をトリガーに走るらしい。
余計なことをしてくる…ただでさえディスクの負荷が高いのにね。
原因は、ファイルの断片化もあるのだろうけど
NTFSファイルシステムの限界近かったというのが真相らしい
全ファイルを移動して、空になったドライブにデフラグをかけてみたが
30分経過しても0%のまま進まない…これには笑ってしまった。
ファイルが無いのにも関わらず、ディスクI/Oは、100MB/secで全力運転(;´Д`)
結局、このドライブはディスク構成を破棄後、ディスクアレイ上から削除
再度、VMディスクを構成してマウントしなおす…これで問題は無くなった。
しかし、今更ながら、このサーバのディスク構成おかしい…
特にディスク0の構成が普通につかっているパソコン状態ですわ
CドライブでWindwsが入っているのは良いけど
同じディスク0にデータ領域としてDドライブが存在している(;´Д`)
例えば、Cドライブが忙しくなったら、Dドライブも忙しくなってレスポンスが落ちる
ディスクを0と1で構成しておけばこのようなことになりにくい。
ディスク0に確保していあるDドライブは一時置き場で頻繁に使わないデータ置き場にする。
頻繁に読み書きする「共有データ」「SQL」「検査LOG保管」を
全部異なるディスク1~3に割り当てを変更。
全データ移行後にデフラグをかけてメンテナンスは終了
超快適にサクサク動くようになりました。
毎日、22時ぐらいから日付回った時間までメンテしていた甲斐があった。
今回のトラブルは難儀で解決に時間もかかったけど
結局の所、別のストレージをマウントして、全データを引っ越しただけ…
これからは、定期的にファイルの見直しとデフラグを実施するようにしよう
っていうか、この手のメンテナンスって、私がやらないとダメなのかしらん?
ハードとネットワークはIT管理部門がやってくれますけど
生産用のサーバの中身は、全部私が見ているのよねぇ…
誰か替わってくれないかな(´・ω・`)