0

Jboss をアプリケーション サーバーとして、MS Sql Server を db サーバーとして使用する 3 層の Java アプリケーションがあります。jdbc タイプ 4 を使用して、App サーバーから Db サーバーに接続します。

Jboss と DB サーバーを同じマシンで実行すると、それらが別のマシンにある場合にパフォーマンスが最大 50% 向上することがわかりました。この大きな違いをどう説明するか。Jboss と DB サーバーが実行されるマシンは非常に優れたワークステーション (利用可能な最高のインテル CPU を搭載) であり、ネットワークはビジネス標準インフラストラクチャを備えた 1Gb イーサネットです。

ネットワークの問題 (レイテンシ、スループットなど) だと思いますか、それとも違いを説明できる他の理由があると思いますか?

4

3 に答える 3

2

上記の場合、次の要因がパフォーマンスに影響を与える可能性があります。

1) DB にアクセスする際のネットワーク遅延: ローカル マシンでは、1 ミリ秒未満になります。DB サーバーとアプリ サーバーが別の場所にある場合、レイテンシはさらに長くなります。特定のリクエストを処理するために "n" DB 呼び出しを行う場合、遅延は n * 2 * レイテンシになります。

解決策: 電話をかける回数を減らします。参照データセットにキャッシュを使用します。

2)アプリケーション サーバーにアクセスする場所: ユーザーが米国にいて、アプリケーション サーバーがインドにある場合、ネットワーク遅延は約 200 ミリ秒になります。ページに多数の css & js ファイルがロードされている場合、使用するブラウザーによっては大幅な遅延が発生します。

解決策: すべての js ファイルを 1 つのファイルにまとめます。js と css には GZip を使用します。JS を縮小します。ブラウザのキャッシュを効果的に使用します。

3)上記の 2 つがボトルネックでない場合は、アプリケーションがデプロイされているサーバーの CPU、メモリ、およびディスク速度を確認します。

于 2012-04-20T06:52:32.827 に答える
1

構成がわからないため、SQL Server は既定で名前付きパイプをトランスポートとして使用します。ローカルでは、これは TCP/IP よりも高速なインメモリ プロセス内通信になります。リモートの場合、パイプは TCP/IP 経由で転送する必要があります。これにより、TCP/IP スタックのマーシャリング/アンマーシャリング (および実際の送信) に独自のオーバーヘッドが追加されます。

あなたは TCP を使用していると言いますが、実際には名前付きパイプをローカルで使用している可能性があります。接続文字列はどのように見えますか?

于 2012-04-20T07:09:17.733 に答える
1

まあ、可能性が多すぎる: 1) ネットワーク設定 2) ファイアウォール 3) 通信サービスの実装 4) など.

すべてのサービス、オプション、フィルターを無効にしてから、1 つずつ有効にすることをお勧めします。これが機能しない場合は、コードを確認してください。

頑張ってください、それは簡単ではありません!

于 2012-04-20T06:47:29.883 に答える