gpt4 book ai didi

MongoDB C# 驱动程序不释放连接然后出错

转载 作者:可可西里 更新时间:2023-11-01 09:58:26 32 4
gpt4 key购买 nike

我正在使用最新版本的 MongoDB(在 Win 64 服务器上)和 C# 驱动程序。我有一个每分钟执行 800 次读取和更新的 Windows 服务,几分钟后,当前使用的线程超过 200,然后每个 mongodb 调用都会出现此错误:

System.IO.IOException: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)

我在正在阅读的字段上有一个索引,所以这不是问题。这是读取的代码:

public static UserUpdateMongo Find(int userId, long deviceId)
{
return Collection().Find(
Query.And(
Query.EQ("UserId", userId),
Query.EQ("DeviceId", deviceId))).FirstOrDefault();
}

我像这样实例化连接:

var settings = new MongoServerSettings
{
Server = new MongoServerAddress(segments[0], Convert.ToInt32(segments[1])),MaxConnectionPoolSize = 1000};
Server = MongoServer.Create(settings);
}

是我做错了什么还是 C# 驱动程序有问题?帮忙!!

最佳答案

C#驱动有一个连接池,连接池的最大大小默认为100。因此,您永远不会看到来自单个 C# 客户端进程的超过 100 个到 mongod 的连接。 1.1 版本的 C# 驱动程序确实在重负载下偶尔会出现问题,其中一个连接上的错误可能会导致断开连接和连接的 Storm 。您可以通过查看服务器日志来判断您是否发生了这种情况,每次打开或关闭连接时都会在其中写入一条日志条目。如果是这样,您可以试用本周发布的 1.2 C# 驱动程序吗?

您不应该需要创建待处理更新队列。连接池通过限制并发请求的数量充当各种队列。

如果您能在服务器日志中找到任何内容,请告诉我,如果还有其他问题,我可以为您提供帮助。

关于MongoDB C# 驱动程序不释放连接然后出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7446528/

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