Npgsql打开与Redshift的连接速度极慢

时间:2014-02-25 15:15:32

标签: npgsql amazon-redshift

我正在使用Npgsql连接到Amazon Redshift。这一切都正常,但连接时似乎很慢。

我正在做的一切似乎很标准:

<add name="EventDatabase" connectionString="Server=...us-west-2.redshift.amazonaws.com; Database=analytics; UID=...; PWD=...; Port=...; Pooling=true; MinPoolSize=4; MaxPoolSize=12; ConnectionLifeTime=300;" />

Connection = new NpgsqlConnection(
    ConfigurationManager.ConnectionStrings["EventDB"].ConnectionString);
Connection.Open();

对此进行基准测试可以让我平均有时间打开0.9秒的连接。这比我预期的要高得多。

应该汇总连接,我会想到开放会是即时的吗?即使它没有汇集,0.9s似乎也很高。我们查询时间的40%用于打开连接。那不对。

我错过了什么吗?

3 个答案:

答案 0 :(得分:0)

Beta1使用Redshift时出现问题。使用RC1,连接开口更快。

答案 1 :(得分:0)

我们发现Npgsql 2.2.5没有将连接释放回连接池,这会因创建新连接的时间过长而加剧(每个连接约1秒)。

这被追踪到一个错误:

  

错误:0A000:不支持SQL命令“UNLISTEN *”。

对2.2.5 NpgSql/NpgSql/NpgSqlConnector.cs代码进行以下更改似乎可以解决问题:

    internal void ReleaseRegisteredListen()
    {
        if (!IsRedshift) 
            NpgsqlCommand.ExecuteBlind(this, NpgsqlQuery.UnlistenAll);
    }

免责声明:这尚未经过全面测试,RedShift可能需要进行不同的清理,这里没有做到。

答案 2 :(得分:0)

Append "Pooling=False" to the connection string, and call this before opening the connection:

ThreadPool.SetMinThreads(512, 512);
ThreadPool.SetMaxThreads(1024, 1024);