0

Tomcat を使用して、Java EE で作成された Web アプリケーションをアップグレードしようとしています。今までNetscape LDAP 実装を使用してきましたが 、現在Unboundid LDAPにアップグレードしようとしています。問題は、Unboundid の実装は、netscape の実装に比べて遅延が非常に大きいことです。

私が何をしようとしているのかについての情報: LDAP から最後の 5 つのエントリを取得し、それらを配列に入れ、この配列を Web ページに表示したいと考えています。

EDIT1: Java SE を使用して、ライブラリをテストするための 2 つのサンプル アプリを作成しました。テストごとに、ソース コードとサーバー側の LDAP ログを添付しました。

結果は同じです。何度繰り返しても、UnboundID SDK 実装を使用して結果を取得するには、平均してはるかに長い時間がかかります。

Netscape LDAP SDK の場合: codeおよびlog。UnboundID LDAP SDK の場合:コードログ

EDIT2: UnboundIDが提供するldap-debuggerツールも使用しようとしていますが、それを機能させる方法がわかりません。バインドするIPとポートを引数として取り、クライアントはldap-debugger を接続すると、彼はプロキシとして機能しますが、クライアントでは既に ldap-debugger の IP とポートを指定しているため、サーバーの IP とポートをどこで指定しますか?

4

1 に答える 1

0

使用しているコードについてすぐに飛び出すものはありません。私のテストでは、UnboundID LDAP SDK は Netscape SDK よりもはるかに高速です。ある種のまれなケースを見つけた可能性は確かにありますが、他のいくつかの可能性を除外したいと思います。

まず第一に、各バージョンの実行にかかる時間をどのように決定していますか? クライアント側のタイミング (例: System.currentTimeMillis()、コードを実行し、System.currentTimeMillis() を再度実行) またはサーバー側のタイミング (例: サーバー アクセス ログで報告される処理時間) を使用していますか? 違いがクライアント側にのみ存在する場合、それは間違いなく SDK の問題を示している可能性がありますが、違いがサーバー側にも表示される場合は、送信されている要求に何か違いがあり、サーバーがより多くのことを行う原因となっている可能性があります。他のケースよりも 1 つのケースで動作します。UnboundID LDAP SDK で提供される ldap-debugger ツールを使用して、どのような通信が行われているかを正確に調査できる可能性があります。

パフォーマンス測定の一環として、それぞれをタイト ループで多数回 (たとえば、100,000 回) 実行しようとしましたか? これにより、必要なすべての JIT コンパイルが実行され、ガベージ コレクションの問題が発生せず、潜在的なサーバー ビジー状態が問題にならないことを確認できます。結論がコードの各部分を 1 回実行しただけに基づいている場合、そこから実際の結論を導き出すことは困難です。

本当にクライアント側の問題であると思われる場合は、問題をより徹底的に調査できるように、より具体的な詳細を提供していただければ幸いです。特に、どのリクエストが送信され、どのエントリが返されているかを正確に確認できると便利です (情報は匿名化できるため、同じパフォーマンス特性を示している限り、機密データが明らかになることはありません)。 . 個人的に提供したい場合は、ldapsdk-support@unboundid.com に情報を送信できます。

于 2014-02-28T19:22:31.230 に答える