Използвам Npgsqlconnection
вътре в Parallel.ForEach
, преминавайки през вградени заявки в списък.
Когато достигна числото около 1400+, получавам съобщение за изключение
„ФАТАЛНО: 53300: оставащите слотове за връзка са запазени за връзки на суперпотребител без репликация“.
Използвам
Pooling=true;MinPoolSize=1;MaxPoolSize=1024;ConnectionLifeTime=1
в моя app.config
и con.Close()
, con.ClearPool()
, con.Dispose()
в моя код.
Parallel.ForEach(queries, query => { 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();
}
});