2020年11月26日木曜日

サーバ・パフォーマンスの問題のトラブルシューティング


PaperCutアプリケーション・サーバが不安定で、
特にピーク使用時に断続的な問題が多数発生するような場合、ここで説明するトラブルシューティングを確認してください。


パフォーマンスの問題の症状

下記の現象が発生しているかを確認してください。

 ・ PaperCutサーバの管理者用Web画面/ユーザ用Web画面の表示が遅い

 ・ デバイスにインストールしたエンベデッド・ソフトウェアやリリースステーションからのログインが遅かったりタイムアウトしたりすると、
   デバイスやリリースステーション上に「サーバへ接続できません」や「接続がタイムアウトしました」のようなエラーが表示される

 ・ サーバのCPUまたはメモリの使用率がずっと高く、100%で横ばいになることがある

 ・ 一般的なスレッドは、問題を再現させることができないことが多い。通常1日で最も印刷が多い時間帯に問題が発生する

上記以外に、「印刷が遅い」や「プリント・ジョブが消える」問題はパフォーマンスの問題を示している可能性があります。



基本的なチェック

「PaperCutサーバサイジングガイド」を参考に、
サーバに適切なリソースが割り当てられていてスケーリングされているかを確認してください。
サイト・サーバとセカンダリ・サーバにも十分なリソースが必要であることを忘れないでください。
パフォーマンスの問題の極端な兆候の1つとして、PaperCutアプリケーション・サーバの「service.log」に次のメッセージが記録されることにあります。

JVM Process has not received any CPU time for X seconds

このメッセージはJava仮想マシン(JVM)として実行されるPaperCutアプリケーションが、
オペレーティング・システムもしくは仮想ホストから十分なリソースを取得できないことを示しています。
「service.log」はPaperCutアプリケーション・サーバをインストールしたサーバ上の次のフォルダ内に生成されます。

\[app-path]\PaperCut NG/MF\server\log

INFO   | jvm 1    | 2020/04/14 13:11:31 | JVM Process has not received any CPU time for 23 seconds.  Extending timeouts.

INFO   | jvm 1    | 2020/04/15 05:08:17 | JVM Process has not received any CPU time for 21 seconds.  Extending timeouts.

INFO   | jvm 1    | 2020/04/15 20:56:36 | JVM Process has not received any CPU time for 19 seconds.  Extending timeouts.



…しかしサーバに多くのメモリを割当てないこと

「PaperCutサーバサイジングガイド」を参考に適切なメモリ割り当てを行ってください。
メモリ割り当てが大きすぎるのも問題となりうる可能性があります。
理由は、PaperCutはJavaアプリケーションであるためです。
適切なメモリ割り当てを維持するためJAVAのガベージ・コレクションのアクティビティの対象となります。
アプリケーション・サーバで使用できるメモリが多すぎると完全なガベージ・コレクションの発生する頻度が少なくなり、完了するまでに時間がかかります。
そしてリソースが消費されてしまいます。

デフォルトではPaperCutサーバはシステムメモリの1/4を使用します。
使用メモリのサイズを微調整したりサーバに割り当てられた物理メモリを保持したい場合、「PaperCutで利用可能なメモリの増加方法」を参考にしてください。



…そしてVMであるサーバのメモリを予約する

このポイントは非常に重要でありながら見過ごされがちです。
PaperCutサーバが仮想マシンで実行されている場合、メモリが予約されていて動的に割り当てられないことを確認してください。
メモリが他のサーバに動的に割り当てることができるプールの一部であると、PaperCutが実行されるJava仮想マシンに影響を与える場合があります。

VMware ESXi ホストで実行されているVMの場合、この設定は「すべてのゲスト メモリを予約(ロック)」と呼ばれ、有効にする必要があります。
Microsoft Hyper-V ホストで実行されているVMの場合、この設定は「動的メモリ」と呼ばれ、無効にする必要があります。

この問題については、「仮想マシン(VM) および仮想サーバ上での動作について」に詳細を記載しています。

仮想マシンのパフォーマンスの問題を調査する際は、仮想ホストも正常に動作していることを確認してください。



保留中のジョブ数をチェック

PaperCutはサーバで保留されている各プリント・ジョブをトラッキングする必要があります。
保留されているプリント・ジョブが多いほど使用されているサーバ・リソースは多くなります。
プリント・ジョブをデフォルトの2時間(120分)より長く保留するように設定した後、問題が発生する可能性があります。

保留中のジョブ数は、PaperCut管理画面の <ダッシュボード> の「システム・ステータス」の「ホールド/リリース・ジョブ」から確認することができます。
常に1500以上のプリント・ジョブが保留されている場合、危険信号とみなす必要があります。
保留中のジョブ数を減少するためにはジョブのタイムアウト時間を短くすることを検討することを強く推奨します。
なおこの変更は、サーバに到達する新規プリント・ジョブから適用されます。そのためすぐには有効化されません。












多数のクライアントPCでダイレクト・プリント・モニタが実行されている場合

PaperCutダイレクト・プリント・モニタをクライアント端末にインストールすることにより、
ローカルプリンタやUSBプリンタへの印刷をトラッキングすることができます。
ただし、ダイレクト・プリント・モニタが実行されているクライアント端末が数百から数千ある場合、PaperCutサーバに負荷がかかる可能性があります。

詳細は「ダイレクト・プリント・モニタが多数実行されている環境」を参照してください。



データベースがボトルネックであるかどうかの確認

PaperCutアプリケーション・サーバの「server.log」から用語「DatabaseHealthChecker」を検索してチェックしてください。
下記の例ではデータベース接続に6000ミリ秒(6秒) かかっていることが記録されています。これは正常ではありません。

DEBUG DatabaseHealthChecker:69 - Database connection test - success. Connect duration: 6017 ms. Query duration: 0 ms. [db-connection-test]

上記のログ・スニペットは、JavaにバンドルされたSQLデータベースのデフォルト・ドライバで発見された問題が原因でした。


PaperCutで内部データベース(Apach Derby)を使用している場合

 ・ このPaperCutサーバを長い期間使用している場合、データベースの最適化を検討してください。
   この操作はパフォーマンスがわずかに向上する可能性がある点でハードドライブのデフラグと似ています。
   しかし根本的な問題が大きい場合はあまり役には立ちません。

 ・ PaperCutアプリケーション・サーバとは別に外部データベース・サーバを構築し、データを移行することを検討してください。
   外部データベースへ移行することにより、PaperCutアプリケーション・サーバの負荷が軽減します。


PaperCutで外部データベース(MS SQL Server など)を使用している場合

 ・ データベース・サーバに適切なリソースが割り当てられていてPaperCutアプリケーション・サーバとの接続が良好であるかを確認してください。

 ・ データベース・サーバ上でサードパーティ製のI/Oテストを実行し、ディスクアレイへの書き込み時に遅延の問題が発生していなかを特定してください。

 ・ 使用している特定のデータベースの問題であるかどうかを絞り込むため、
   データベース・タイプを変更して問題が解決するかどうかを確認することを検討してください。(例: MS SQL ServerからPostgreSQLに変更など)



不要な場合、デバッグ・モードを無効化する

サーバがビジー状態の場合、デバッグ・モードが有効化されたままになっていることがあります。
デバッグ・モードは問題を診断し検出するためには重要です。
しかし追加の読み取り/書き込み操作により大規模なサイト(数万のクライアントが存在するような環境)によっては
負荷が測定できないほど増加する可能性があります。
そのため、無期限にデバッグ・モードを有効化しないでください。
パフォーマンスの問題を診断するためにデバッグ・モードを有効化したままにすると、
クライアントはサーバがログ・ファイルを更新するのを待機しなければならなくなり、問題が悪化する可能性があります。
次の注意事項を参照してください。

 ・ ほとんどの場合、通常のログ(デバッグ・モードは無効化)に重要なメッセージを探し出すために必要な情報が含まれています。

 ・ アクティブな問題を診断する必要がない限り、サーバのデバッグ・モードは無効化してください。

 ・ 昼間の負荷が高い時間帯にサーバの再起動を計画している場合、再起動前にデバッグ・モードを無効化してください。


-------------------------

https://www.papercut.com/kb/Main/TroubleshootingServerPerformanceIssues#but-don-t-give-the-server-too-much-memory



0 件のコメント :

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。