0

実行速度が非常に遅く、時々ハングする Web アプリケーションがあります。これは、レポートと編集機能を備えた学校関連の Wicket アプリであり、自動化されたクライアントが HTTPS 経由でデータを取得/投稿するために使用するサーブレットでもあります。

多くの編集/アップロード/ダウンロードが行われている忙しい時間帯には、アプリが遅くなり、応答しなくなります。Wicket の「PageMap はまだロックされています」というエラーが表示されます。Tomcat は動き続けているようです。メモリ使用量は管理可能で、約 50M です。

プロファイリング情報を取得するように YourKit をセットアップしたところ、忙しい時期に Tomcat の CPU 時間の 81% がここで費やされていることがわかりました。

org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run()
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(Object[])
org.apache.jk.common.ChannelSocket.processConnection(MsgContext)
org.apache.jk.common.ChannelSocket.receive(Msg, MsgContext)
org.apache.jk.common.ChannelSocket.read(MsgContext, byte[], int, int)
java.io.BufferedInputStream.read(byte[], int, int)
java.io.BufferedInputStream.read1(byte[], int, int)
java.io.BufferedInputStream.fill()
java.net.SocketInputStream.read(byte[], int, int)
[Wall Time]  java.net.SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int)

このアプリでは、約 250 のクライアントが SSL 経由でサーバーをポーリングし、30 秒ごとに更新を要求しています。ほとんどの場合、これはすぐに空の応答を返します。時折、DB アクティビティが急増し、大量のデータ (数 MB) がクライアントに送り返されることがあります。

では、この 81% のアクティビティは何によるものでしょうか? 接続が非常に遅い少数のクライアントは、Tomcat スレッドが着信要求本文を待機する原因となり、Tomcat スレッドを停止させる可能性がありますか?

このようなものを見た人はいますか、またはこれをテスト/トラブルシューティング/修正する方法について何かアドバイスはありますか?

4

2 に答える 2

0

テスト環境をセットアップし、負荷テストでこれを再現してみてください。
そうすれば、原因を切り分けることができます。そうでなければ、要因が多すぎます。
また、このようにして、製品環境を危険にさらすことなく修正を試すことができます。

于 2009-10-26T15:59:29.837 に答える
0

メモリの使用が原因である可能性があります。
Java プロセスのメモリ使用量をチェックして、どれだけ取得しているかを確認する必要があります。
十分でない場合は、Tomcat に設定されている Xmx jvm パラメータを設定する必要があります。

于 2009-10-26T04:17:17.567 に答える