3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

スプーラのメモリリーク?

Windows Server 2003 ターミナルサーバから印刷ができないという現象が発生しました。

とりあえず印刷スプーラサービスの再起動で治ったんですが、イベントログをみると現象発生時に下記のようなエラーとなっていました。

イベントの種類:エラー

イベント ソース:Print

イベント カテゴリ:なし

イベント ID:6162

日付:2010/01/01

時刻:00:00:00

ユーザー:NT AUTHORITY\SYSTEM

コンピュータ:TerminalSV

説明:

コンポーネントで、非常に多くの GDI オブジェクトが開かれていることが

スプーラにより検出されました。その結果、EMF 印刷ジョブのいくつかは、

スプーラが再開されるまで印刷されない可能性があります。

スプーラがどれくらいのGDIオブジェクトを使っているかは、タスクマネージャの列に「GDIオブジェクト」を追加してやると分かります。

しかし、現象発生時にどれくらいのGDIオブジェクトを使っていたのかは分かりません。

(GDIは画面描画以外にも印刷でも使われることは意識してませんでした。。ただPostScript)

別のターミナルサーバでスプーラの状態見ると100MBのRAM消費、そしてGDIオブジェクトが4000超えて使ってるようでした。

どうやら、プリンタドライバか印刷するアプリケーション側か、それともスプーラ自体のバグか分かりませんがスプーラにリソースを握らせたまま解放させてないようです。

時間があればどいつが犯人なのか調査したいところですね。。

もっともその時間が無いので、とりあえずスプーラを定期的に再起動するという運用に落ち着きそうですが。。。