Я использую Npgsqlconnection
внутри Parallel.ForEach
, просматривая встроенные запросы в списке.
Когда я достигаю числа около 1400+, я получаю сообщение об исключении
«FATAL: 53300: оставшиеся разъемы для подключения зарезервированы для подключений суперпользователя без репликации».
Я использую
Pooling=true;MinPoolSize=1;MaxPoolSize=1024;ConnectionLifeTime=1
в моем app.config
и con.Close()
, con.ClearPool()
, con.Dispose()
в моем коде.
Parallel.ForEach (запросы, запрос => {using (NpgsqlConnection con = new NpgsqlConnection (ConfigurationManager.ConnectionStrings ["PSQL"]. ConnectionString)) {con.ClearPool (); con.Open ();
//int count = 0;
int queryCount = queries.Count;
using (NpgsqlCommand cmd = con.CreateCommand())
{
cmd.CommandType = CommandType.Text;
//cmd.CommandTimeout = 0;
cmd.CommandText = query;
cmd.ExecuteNonQuery();
count += 1;
this.label1.Invoke(new MethodInvoker(delegate { this.label1.Text = String.Format("Processing...\n{0} of {1}.\n{2}% completed.", count, queryCount, Math.Round(Decimal.Divide(count, queryCount) * 100, 2)); }));
}
con.Close();
//con.Dispose();
//con.ClearPool();
}
});