プリント・スプーラのクラッシュの修正 - プリント・スプーラの安定性の向上
弊社ではお客様からよくプリント・キュー/スプーラの安定性の問題についてお問い合わせをいただきます。
ほとんどの場合この問題はPaperCutに関連しません。
多くの大規模な環境において共通の問題です。この記事では、プリント・スプーラの問題について解説します。
プリント・キューの安定性の問題は下記のように現れます:
・ プリント・キューが時にランダムにロックされ、問題のジョブをクリアする必要がある。
・ プリント・キューは時々ランダムにロックさ、問題のジョブがクリアできない。
・ サービス「プリント・スプーラ」(spoolsv.exe) がクラッシュし、Windowsのイベント・モニターにエラーが報告される。
・ プリント・スプーラ・サービスがハングアップしたりライブロックしてすべてのキューが停止する。
上記のような挙動はランダムに発生し、通常多くの場合プリント/サーバ負荷に関連しています。
同様のケースとして特殊なタイプのプリント・ジョブののようなイベントと関連している場合があります。
長年にわたり開発元では多くのPaperCutユーザと一緒に活動しこれらの問題をカテゴリー分けしてきました。
ほとんどのケースにおいてこれらの問題はドライバに関連するかバグによるものです。
(開発元では問題が特定できるまで慎重にプリンタ・タイプやドライバ種類を分別してきました。)
■ 一般的なディスカッション
プリント・スプーラがクラッシュするほとんどの原因は不良ドライバ(ドライバのバグ)です。
Windowsのプリント・スプーラ・システムは、他のプリント・キュー・アーキテクチャ(CUPSなど)とは異なりモノリシックな構造です。
スプーラ・プロセスのアドレス空間に単一のプロセスとドライバ・コードをロードします。
これはドライバ・コードのクラッシュが現在のジョブを停止させるだけではなく、すべてのプリンタのスプーラやキューに影響を与えることを意味します。
PaperCut社は信頼性を向上させるために次の設定を行うことを推奨しています:
1. 「詳細な印刷機能を有効にする」オプションを無効化する
ドライバのコードの大半は、ジョブをプリンタ言語(PCLやPostScript)にレンダリング/ラスタライズすることを担当しています。
従い定義によってこれらの領域にバグが存在する可能性が高いです。
レンダリングのタスクをサーバからワークステーションへ変更することができます。
(「詳細な印刷機能を有効にする」オプションを無効化することより変更できます)
この機能は、ジョブをワークステーション上でレンダリングせず強制的サーバ上でレンダリングします。
「詳細な印刷機能を有効にする」を無効化することにより、クラッシュする原因がドライバのレンダリング・コード内に存在する場合、
問題はワークステーションを利用するユーザにとどまるため、サーバの安定性が向上します。
「詳細な印刷機能を有効にする」を無効化の無効化方法は下記の通りです。
1. プリント・サーバの「デバイスとプリンター」を開く
2. 設定を変更するプリンタの右クリックしプリンタープロパティを選択
3. プロパティ画面の<詳細設定>タブをクリック
4. 「詳細な印刷機能を有効にする」のチェックを外し、[OK]をクリック
2. 「双方向サポートを有効にする」オプションを無効化する
特定のプリンタのキューに問題があると思われる場合、そのドライバの「双方向サポートを有効にする」の設定を無効化してください。
1. プリント・サーバの「デバイスとプリンター」を開く
2. 設定を変更するプリンタの右クリックしプリンタープロパティを選択
3. プロパティ画面の<ポート>タブをクリック
4. 「双方向サポートを有効にする」のチェックを外し、[OK]をクリック
このオプションは、プリンタのハードウェア・ステータスのレポートなどタスクに関連する機能を無効化します。
問題/バグがドライバ・コードのこの領域に存在する場合、安定性が向上します。
3. ドライバの品質(Quality Drivers)
よく知られているベンダーの品質の高いドライバを使用してください。
1つの品質の悪いドライバが他のドライバに影響を与える場合があります。
特定のドライバが問題を引き起こしているように見受けられる場合、そのドライバのみを別のプリントサーバに退避することを検討してください。
問題のあるドライバが引き起こす問題を他のプリンタに影響させないためです。
実際にPaperCut社の顧客である大学において2つのプリントサーバを運用している
例があります。1つは問題のないプリンタ・ドライバのためで、もう1つはある問題のあるプリンタ・ドライバのために運用しています。
4. モニタリング
コンピュータはコンピュータであり問題が発生するものです。
サービスを監視するためのプロシージャーを設置し問題が発生した場合の対処方法を計画してください。
スプーラ・サービスが故障時に自動的に再起動するように設定されていることを確認してください。
なお、PaperCutにはプリンタにエラーが発生した場合に管理者にEメールで通知を送信する機能があります。
これらのオプションも活用することをご検討ください。
5. 単一ポイントの障害を排除
上記で解説したように、問題のあるプリンタ・ドライバを他のサーバに分離することは、障害の区分を行う上で良い方法の1つとなります。
大規模な環境では複数のサーバ間でサーバ・クラスタリングや負荷分散などの高度な方法を検討する必要があるかもしれません。
障害の単一ポイントは、障害がある一定の領域だけのものとし他のユーザやサービスに影響を与えないため、これらのメソッドの設計を確実なものにします。
(例: 工学部のプリント・サーバにホスティングしている大判印刷用のプリンタのクラッシュは、
他の標準的なレーザープリンタがホスティングしている別のプリント・サーバに影響を与えない)
なおPaperCutはクラスタリングとマルチサーバの展開をサポートしています。
0 件のコメント :
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。