2010-12-12 13 views
2

localhostサーバー上でJavaとMySQLを接続すると、瞬時にアクセスします。
しかし、ローカルホストの外に、ネットワークPC(192.168.1.100)から接続すると、非常に遅い(4-5秒)。
パブリックIPからMY SQLサーバーに接続すると、それも非常に遅い(6秒以上)。MySQLに接続するとJavaが遅いのはなぜですか?

答えて

6

コンピュータが外部サーバーにパケットを送信する時間が必要なため、パケットを送信する時間が必要です。これはネットワーク待ち時間と呼ばれ、Javaでは特に問題ではありませんが、一般的なネットワークの問題です。

1

ネットワーク待機時間+接続作成時間は私の推測となります。クライアントマシンとMySQLサーバーの間に何があるのか​​分かりません。

8

"なぜ"はすでに回答済みです。それはちょうどネットワークの待ち時間です。

あなたはおそらくそれを "修正"する方法にも興味があります。答えはconnection poolです。 Java Webアプリケーションを実行している場合は、Webサーバー提供の接続プーリング機能を使用します。 Tomcatを例に取るには、this manualをチェックしてください。 Javaデスクトップアプリケーションを実行している場合は、c3p0(チュートリアルhere)のような適切な接続プールの実装を使用してください。

2

同じ接続をローカルに行うよりも、ネットワーク経由で接続するのに時間がかかります。しかし、あなたがかなり典型的なローカルネットワークを持っていると仮定すると、4-5秒は少し極端に聞こえます。私の推測(それはちょうど推測です)は余分な時間の大部分がネットワーク名解決(すなわちDNSやネットビオス)によって消費されていることでしょう。

名前ではなく数字のIPアドレスを使用して接続を試すことをお勧めします。

+0

私はちょうどIPアドレスを試してみます。ちょうどネットワークの待ち時間のために4〜5秒は本当に遅いようです。 –

+0

+1名前解決に関して良い点。 – BoltClock

1

接続に4秒かかるとDNSに問題が発生する可能性があり、純粋なネットワーク待ち時間になることはありません。 "skip-name-resolve"パラメータでMySQLサーバを起動して、クライアントのIPをホスト名に解決しないようにしてください。その前に、あなたの許可テーブルがIPとシンボル名の代わりに 'localhost'に基づいていることを確認してください。

関連する問題