2

認証を処理するために使用するサーバーアプリケーションに取り組んでおり、すべてインスタンスで実行されJersey JAX-RSRESTいます。ShiroTomcat

私が経験している問題は、REST 呼び出しが連続して処理されているように見えることです (少なくとも、少数の同時スレッドのみで)。

NodeJS約 5 秒以内に約 80 人のユーザーがサーバーにログインする小さなテストを作成しました。私が見つけたのは、各ユーザーの応答時間が次第に長くなっていることです。ここに私の出力があります:

Login completed in 3256 ms
Login completed in 3752 ms
Login completed in 3830 ms
Login completed in 3957 ms
Login completed in 4304 ms
Login completed in 4528 ms
Login completed in 4724 ms
Login completed in 4814 ms
Login completed in 5072 ms
Login completed in 5171 ms

...いくつか削除しました。

Login completed in 25337 ms
Login completed in 26364 ms
Login completed in 26738 ms
Login completed in 27114 ms
Login completed in 27266 ms
Login completed in 27337 ms
Login completed in 27847 ms
Login completed in 28365 ms
Login completed in 28571 ms
Login completed in 32358 ms

ログイン呼び出しは、いくつかのデータベース作業を行ってから戻ります。興味深いのは、サーバー側でも呼び出しのタイミングを計っていることです。ログイン時間は常に約 3 秒から 6 秒です。

これは、リクエストがコードに到達する前にどこかのキューに入っていることを示しています。Jerseyリクエストごとに新しいスレッドを開始することになっていることを読みましたが、ヒットしている最大値はありますか? もしそうなら、どうすればそれを増やす/設定できますか? それともこれはTomcat設定の問題ですか?

Shiro問題の原因ではないことを確認するために無効にしました。

4

1 に答える 1

1

愚かな私。待ち行列は実際にNode側で起こっていました。Nodeが自動的に各リクエストを並行して送信すると誤って考えましたが、機能させるにはmaxSockets値を増やす必要がありました ( Nodejs Max Socket Pooling Settingsを参照)。

于 2013-08-20T22:38:27.940 に答える