cassandra连接峰值负载问题

时间:2020-05-17 21:00:04

标签: cassandra connection load latency

我根据以下结构使用cassandra: 21个节点,AWS EC2 i3.2xlarge,版本3.11.4。

应用程序正在使用datastax java连接驱动程序打开每个节点大约5000个连接(因此每个集群100k个连接)。 应用程序正在使用自动缩放,并经常打开/关闭连接。 应用程序服务器一次打开的连接数最多可以达到每个节点500个(一次在所有节点上同时打开-因此其1万个连接在整个群集中同时打开)

这会导致cassandra上的负载峰值,并导致读写延迟。 我注意到每次连接打开/关闭时,都会从system_auth.roles和system_auth.role_permissions中读取大量内容。

如何防止负载并解决此问题?

1 个答案:

答案 0 :(得分:0)

您需要修改您的应用程序以使用尽可能少的连接。您需要牢记以下几点:

  • 在开始时创建一次Cluster / Session对象并保留它。会话初始化是一项非常昂贵的操作,它会给Cassandra和您的应用程序增加负担
  • 您可以增加每个连接的同时请求数,而不用打开新的连接。协议允许每个连接最多32k请求。虽然,如果您在进行中的请求过多,则表明您的Cassandra不能承受工作量并且无法足够快地回答。参见documentation on connection pooling