【问题标题】:Postgres Npgsql connect slower than SQL ServerPostgres Npgsql 连接速度比 SQL Server 慢
【发布时间】:2010-09-07 01:05:23
【问题描述】:

为什么通过 Internet 或 VPN 连接到 postgres 比 sql server 慢? 我有测试

    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));

当连接是本地主机时,它们是相似的,但是当连接是通过互联网时。 SQL 连接需要 1-5 秒,但 postgres 需要 3-7 分钟。 有没有办法解决这个问题?

团黄英

【问题讨论】:

    标签: postgresql npgsql


    【解决方案1】:

    SSL 的设置是什么?

    SHOW ssl;
    

    即使您实际上不使用 SSL,创建 SSL 连接也会变慢。如果您不需要额外的安全措施,请将其关闭。

    3 到 7 分钟大约是 180 到 420 秒,如果您创建 1000 个连接,则每个连接“仅”需要 0.18 到 0.42 秒。 SQL Server 不会在 1 到 5 秒内通过网络建立 1000 个连接,网络会太慢。听起来像是一个连接池,让您相信您已经创建了一个新连接。

    【讨论】:

      【解决方案2】:

      3-7 分钟对于连接来说肯定是很长的(我不确定那个时间是用于单个连接还是用于您正在尝试的 1000 个连接)

      我很确定网络有问题。

      “通过互联网”到底是什么意思? 这些服务器真的位于公共互联网上吗? SQL Server 和 Postgres 是否安装在同一台机器上?

      如果没有,这些机器在哪里?如果两个 DBMS 都安装在不同的机器上,我会查看 Postgres 服务器的网络配置。

      除了一般的“互联网”问题(例如路由速度慢)外,还可能是(物理)网络接口的问题。我们曾经遇到过有故障的网卡,每个数据包都要重新发送 3-4 次,这大大减慢了速度。

      【讨论】:

      • SQL Server 和 Postgres 是否安装在同一台机器上?是的,“通过互联网”是互联网上服务器的 IP - 对不起我的英语
      【解决方案3】:

      当你建立连接时,Npgsql 会尝试创建 minpoolsize 连接。在第一次连接时,它会运行一些查询来检查类型和一些支持的功能。也许这会减慢您的测试速度。

      奇怪的是,Npgsql 只对第一个连接执行此操作,因此,之后您应该可以顺利运行。您介意只测试 2 个循环而不是 1000 个循环,然后看看效果如何?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-23
        • 2017-10-31
        • 1970-01-01
        • 2012-06-25
        • 2010-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多