Gia*_*era 2 c# postgresql database-connection connection-pooling
我在 C# 和 PostgreSQL 中出现错误“Too Many Clients Already”,我做错了什么吗?
这是我的主要代码
public class NationalService
{
private NpgsqlConnection conn;
protected string query;
public NationalService()
{
this.conn = ConnectionService.GetConnection();
}
public string GetNamaWilayah(string kodePropinsi, string kodeKabupaten)
{
this.query = "select namakabupaten from dim_gab_wilayah where kodepropinsi='" + kodePropinsi + "' and kodekabupaten='" + kodeKabupaten + "' group by namakabupaten";
string namaKabupaten;
using (NpgsqlCommand command = new NpgsqlCommand(this.query, this.conn))
{
using (NpgsqlDataReader dr = command.ExecuteReader())
{
while (dr.Read())
{
namaKabupaten = dr["namakabupaten"].ToString();
return namaKabupaten;
}
}
}
return string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
}
这就是我建立联系的方式
public class ConnectionService
{
public static NpgsqlConnection GetConnection()
{
string connStr = WebConfigurationManager.ConnectionStrings["local"].ConnectionString;
NpgsqlConnection conn = new NpgsqlConnection(connStr);
conn.Open();
return conn;
}
}
Run Code Online (Sandbox Code Playgroud)
我没有写像 conn.close(); 这样的东西 但我在使用中写了 conn.Open 。
临时我已将 postgresql.conf 中的 max_connections = 100 更改为 1000
你能给我提示吗?
提前致谢
当创建该类的新实例时,您将创建与服务器的新连接NationalService,但这些连接永远不会关闭。您需要向类添加一个 clean 方法,该方法将在实例被销毁之前调用,在该方法中您必须通过调用 close() 方法来释放连接。
当服务器被要求创建比其配置维持的连接更多的连接时,就会出现“太多客户端”异常。
我不是 C# 开发人员,而是 Java 开发人员。
以同样的方式检查您正在使用的dataReader是否也需要关闭。
我强烈建议您在生产部署中使用连接池库,而不是自己创建和维护连接。
| 归档时间: |
|
| 查看次数: |
6501 次 |
| 最近记录: |