0

インターネットまたはVPN経由でpostgresに接続すると、SQLサーバーよりも遅いのはなぜですか? テストがあります

    DateTime now0 =  System.DateTime.Now;
    string sqlconnectsrting = "server=xxx.xxx.xxx.xxx;database=pubs;uid=sa;pwd=";
    for (int i = 0; i < 1000; i++)
    {
        SqlConnection connect = new SqlConnection(sqlconnectsrting);
        connect.Open();
        connect.Close();
    }
    System.DateTime now1 = System.DateTime.Now;
    Console.WriteLine(String.Format("SQL Connect time : {0}", now1 - now0));

    now0 = System.DateTime.Now;
    string npgconnectsrting = "Server=xxx.xxx.xxx.xxx;Port=5433;User Id=postgres;Password=postgres;Database=hr_data;";
    for (int i = 0; i < 1000; i++)
    {
        NpgsqlConnection connect = new NpgsqlConnection(npgconnectsrting);
        connect.Open();
        connect.Close();
    }
    now1 = System.DateTime.Now;
    Console.WriteLine(String.Format("Postgres Connect time : {0}", now1 - now0));

接続が localhost の場合は似ていますが、接続がインターネット経由の場合です。SQL 接続には 1 ~ 5 秒かかりますが、postgres には 3 ~ 7 分かかります。とにかくこれを修正する方法はありますか?

トゥアン ホアン アン

4

3 に答える 3

4

SSLの設定は?

SHOW ssl;

実際に SSL を使用していなくても、SSL 接続の作成は遅くなります。追加のセキュリティが必要ない場合はオフにします。

3 ~ 7 分は約 180 ~ 420 秒です。1000 の接続を作成すると、接続ごとに 0.18 ~ 0.42 秒しかかかりません。SQL Server は、ネットワーク上で 1 ~ 5 秒以内に 1000 の接続を確立することはできません。ネットワークは遅すぎます。新しい接続を作成したと思わせる接続プールのように聞こえます。

于 2010-08-29T15:56:33.447 に答える
0

接続を確立すると、Npgsql は minpoolsize 接続を作成しようとします。最初の接続時に、いくつかのクエリを実行して、タイプとサポートされている機能を確認します。多分これはあなたのテストを遅くしています。

奇妙なのは、Npgsql が最初の接続に対してのみそれを行うことです。そのため、その後はスムーズに実行する必要があります。1000 ループではなく 2 ループだけをテストして、どうなるか見てみませんか?

于 2010-09-06T17:05:23.707 に答える
0

接続に 3 ~ 7 分は間違いなく長すぎます (その時間が 1 回の接続の場合なのか、試行している 1000 回の接続の場合なのかはわかりません)。

ネットワークに問題があることは確かです。

「インターネット経由」とは具体的に何を意味しますか?それらのサーバーは本当に公共のインターネットに配置されていますか? SQL Server と Postgres は同じマシンにインストールされていますか?

そうでない場合、それらのマシンはどこにありますか? 両方の DBMS が異なるマシンにインストールされている場合は、Postgres サーバーのネットワーク構成を調べます。

一般的な「インターネット」の問題 (ルーティングの遅さなど) とは別に、(物理的な) ネットワーク インターフェイスの問題である可能性もあります。以前、ネットワーク カードに障害があり、すべてのパケットを 3 ~ 4 回再送信していたため、処理速度が大幅に低下しました。

于 2010-08-29T12:12:44.200 に答える