将来自社区的jj游戏官方下载 Cassandra专家和DataStax聚集在一起。

想学习吗?有一个问题?想分享您的专业知识吗?你是在正确的地方!

不知道从哪里开始? 入门

 

michael.shatz_192704头像图片
michael.shatz_192704 ·

如何增加已达到256个最大值的连接池大小?

你好

请求因以下错误而失败:

io.cyanite.api request process exceptioncom.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /<IP>:9042 (com.datastax.driver.core.exceptions.BusyPoolException: [/<IP>] Pool is busy (no available connection and the queue has reached its max size 256))) 

你能告诉我如何增加拉力大小吗

谢谢

麦可

Java驱动
10 | 1000 所需字符 剩余字符 超出字符

最多可以使用8个附件(包括图像),每个附件最多1.0 MiB,总共10.0 MiB。

1 回答

埃里克·拉米雷斯(Erick Ramirez)头像图片
埃里克·拉米雷斯(Erick Ramirez) 已回答 ·

The BusyPoolException gets thrown when all the connections in the pool are used and there are no available slots left. This can happen when:

  • 一个应用程序正在发送多个长期运行的请求,这些请求最终会占用池中的所有连接,直到没有连接为止,或者
  • 节点超载,请求排队。

The driver will attempt to connect to nodes in the query plan one by one but when they're all busy and there are no nodes left to contact in the list, the driver will return the NoHostAvailableException.

试图增加连接池的大小并不能达到您想要的结果,这仅仅是因为节点已经过载,并且向队列中添加更多请求只会使情况变得更糟。

您需要检查您的查询,并确保您仅在执行单分区请求。您还需要限制流量,以确保不会使群集超载。干杯!

6 评论 分享
10 | 1000 所需字符 剩余字符 超出字符

最多可以使用8个附件(包括图像),每个附件最多1.0 MiB,总共10.0 MiB。

你好 @埃里克·拉米雷斯

感谢您的回答。

即使可以,请您指导如何增加泳池大小?

谢谢

0个赞 0 ·

看到 连接池 in the driver docs.

0个赞 0 ·

你好

我在cassandra.yaml中设置以下属性
max_connections_per_host = 1000和
max_requests_per_connection = 1024

卡桑德拉(Cassandra)重新启动

但是上面没有帮助,已经抛出了BusyPoolException。

请指教

谢谢

0个赞 0 ·

我觉得您错过了我的答案的重点。让我用一个比喻。

想象一下,您在一家快餐店有3个收银员接受订单,每个收银员有10个客户排队(总共30个)。但是,外面的厨师一次只能提供20个订单,因此他们无法跟上30个客户的订单(导致"busy queue" problem).

在前台增加更多的收银员实际上并不能解决问题,因为客户队列的大小不会产生影响-问题是厨房中没有足够的容量来处理订单。

在您的情况下,您的群集每秒只能处理X个事务(tps),但是您的应用程序正在发送X + Y tps。您需要增加群集的大小以解决额外的Y tps。干杯!

0个赞 0 ·
michael.shatz_192704头像图片 michael.shatz_192704 埃里克·拉米雷斯(Erick Ramirez) ·

嗨,埃里克,

非常感谢您对我所有问题的快速答复,但没有一个对我有任何帮助
(注意:我完全理解您的回答)。

我只想知道如何更改以下属性:max_connections_per_host和
max_requests_per_connection-这就是我想知道的全部

谢谢

0个赞 0 ·
显示更多评论