認証を処理するために使用するサーバーアプリケーションに取り組んでおり、すべてインスタンスで実行されJersey JAX-RS
てREST
います。Shiro
Tomcat
私が経験している問題は、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
問題の原因ではないことを確認するために無効にしました。