gpt4 book ai didi

c# - C# 和 PostgreSQL 中已有太多客户端

转载 作者:行者123 更新时间:2023-11-29 12:29:05 25 4
gpt4 key购买 nike

我在 C# 和 PostgreSQL 中遇到错误“已经有太多客户端”我做错了什么吗?

这是我的主要代码

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;
}

这就是我获得联系的方式

public class ConnectionService
{
public static NpgsqlConnection GetConnection()
{
string connStr = WebConfigurationManager.ConnectionStrings["local"].ConnectionString;
NpgsqlConnection conn = new NpgsqlConnection(connStr);
conn.Open();
return conn;
}
}

我没有写像 conn.close(); 这样的东西但是我写的是conn.Open in using。

为了临时起见,我在 postgresql.conf 中将 max_connections = 100 更改为 1000

你能给我提示吗?

提前致谢

最佳答案

每当创建类 NationalService 的新实例时,您都在创建与服务器的新连接,但这些连接永远不会关闭。您需要向类添加一个 clean 方法,该方法将在实例被销毁之前调用,在此方法中,您必须通过调用 close() 方法来释放连接。

已经有太多客户端”异常出现在服务器被要求创建比配置维护更多的连接的情况下。

我不是 C# 开发人员,而是 java 开发人员。

同理检查你正在使用的dataReader是否也需要关闭。

我强烈建议您在生产部署中使用连接池库,而不是自己创建和维护连接。

关于c# - C# 和 PostgreSQL 中已有太多客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4592142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com