erschöpft Wenn Daten in der Datenbank einfügen parallel mit foreach
bekomme ich folgende Fehlermeldung:Der Verbindungspool wurde
The connection pool has been exhausted'
nach einem gewissen Menge an Daten in die Datenbank
Einfügentry
{
var connection = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
Parallel.ForEach(Enumerable.Range(0, 1000), (_) =>
{
using (var connectio = new NpgsqlConnection(connection))
{
connectio.Open();
using (var command = new NpgsqlCommand("fn_tetsdata", connectio) { CommandType = CommandType.StoredProcedure })
{
command.Parameters.AddWithValue("firstname", "test");
command.Parameters.AddWithValue("lastname", "test");
command.Parameters.AddWithValue("id", 10);
command.Parameters.AddWithValue("designation", "test");
command.ExecuteNonQuery();
}
connectio.Close();
}
});
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Die Standardgröße des Verbindungspools ist 20, also entweder erhöhen oder die Anzahl der Verbindungen reduzieren. –
Ich frage mich nur, warum du es so machen würdest ... Du erkennst, dass es normalerweise besser ist, eine Menge Arbeit in einem einzigen Stapel zu erledigen, anstatt viele Fäden zu werfen, die eine Verbindung herstellen, etwas Arbeit machen, trennen , etc? – atlaste
Ich bin nicht davon überzeugt, dass die Standard-Pool-Größe ist 20 - http://StackOverflow.com/Questions/18943703/How-Many-Threads-parallel-forforeach-will-create-default-maxdegreeofparalleli –