有谁知道MongoDB超时异常的修复方法?



我最近更频繁地收到MongoDB超时异常。我编写了一个不和谐的机器人,它依赖于它来实现大多数基于公会的功能,昨天它根本无法使用 Java 驱动程序登录 MongoDB。只是为了大致概述它,我正在使用所有最新的驱动程序和依赖项,并且根本不使用任何已弃用的方法。

由于这在我自己的代码中不是问题,因此我尝试修改连接超时和不同的网络设置。

以下是控制台中的错误日志(忽略记录器消息(:

2020-05-22 18:25 [main] CavenBot [INFO ] - Logging into databases...
2020-05-22 18:25 [main] CavenBot [INFO ] - Logging into MongoDB
Exception in thread "main" com.mongodb.MongoConfigurationException: Unable to look up TXT record for host discord-y3bzo.mongodb.net
at com.mongodb.internal.dns.DefaultDnsResolver.resolveAdditionalQueryParametersFromTxtRecords(DefaultDnsResolver.java:131)
at com.mongodb.ConnectionString.<init>(ConnectionString.java:378)
at com.mongodb.client.MongoClients.create(MongoClients.java:61)
at com.dragons0u1.CavenBot.main(CavenBot.java:37)
Caused by: javax.naming.CommunicationException: DNS error [Root exception is java.net.SocketTimeoutException: Receive timed out]; remaining name 'discord-y3bzo.mongodb.net'
at jdk.naming.dns/com.sun.jndi.dns.DnsClient.query(DnsClient.java:313)
at jdk.naming.dns/com.sun.jndi.dns.Resolver.query(Resolver.java:81)
at jdk.naming.dns/com.sun.jndi.dns.DnsContext.c_getAttributes(DnsContext.java:434)
at java.naming/com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes(ComponentDirContext.java:235)
at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:141)
at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:129)
at java.naming/javax.naming.directory.InitialDirContext.getAttributes(InitialDirContext.java:171)
at com.mongodb.internal.dns.DefaultDnsResolver.resolveAdditionalQueryParametersFromTxtRecords(DefaultDnsResolver.java:114)
... 3 more
Caused by: java.net.SocketTimeoutException: Receive timed out
at java.base/java.net.DualStackPlainDatagramSocketImpl.socketReceiveOrPeekData(Native Method)
at java.base/java.net.DualStackPlainDatagramSocketImpl.receive0(DualStackPlainDatagramSocketImpl.java:124)
at java.base/java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:182)
at java.base/java.net.DatagramSocket.receive(DatagramSocket.java:815)
at jdk.naming.dns/com.sun.jndi.dns.DnsClient.doUdpQuery(DnsClient.java:423)
at jdk.naming.dns/com.sun.jndi.dns.DnsClient.query(DnsClient.java:212)
... 10 more

这里的相关错误是:


Unable to look up TXT record for host discord-y3bzo.mongodb.netDNS error
java.net.SocketTimeoutException: Receive timed out

这表明您使用的是mongodb+srv样式的连接字符串,并且 DnsClient 库尝试在 DNS 服务器查询 TXT 记录以进行连接时超时。

也就是说,这看起来很像 DNS 解析器配置、DNS 服务器或与 DNS 服务器的网络连接的问题。

最新更新