十一 hugegraph+cassandra 连接池

2020-01-14  本文已影响0人  NazgulSun

场景

hugegraph 使用一段时间后,与 cassandra 的 tcp 连接一直在增加。
使用 nestat -ano |Grep 9042, 可以达到1000左右。
慢慢的就会抛出, pool busy exceptin

cassandra 连接池的使用

hugegraph 使用线程级别复用 session。
每个session 使用默认的连接池配置,也就是一个 session- > 1 pool-> 1 host
每个pool 里面 默认只开一个 connection。

所以按道理来说, 有多少线程,就有多少个 session,也就是多少个 connection。

那么拿到有1000个线程?

hugegraph 的线程池

有两个, 1 一个是 rest server,一个是 gremlin-server

两个都是使用 fixHtreadPool,并且coresize = maxsize。
也就是说如果没有意外,这两个线程池都是固定不变的。
默认是 2cpu。
也就是最多4
cpu 个线程,推导出 最多 4* cpu 个 session才对。

观察到的现象与我们连接的数据不一样,不知道为什么?

我们通过jstack 看到 有大量 cluster-1-12 ,按到里应该没有这么多才对的。
应该是 某个隐蔽的地方存在线程泄漏,或者是 消费,新建。

问题复现

我们对于每个请求都新开一个session,在压测的时候,就能够快速的进入 poolbusyexception。
也就是说无法获得新的连接,所以还是怀疑, 建立了太多的session导致了问题。

当我把session复用起来,一个keyspace 一个session的时候再也没出现过这个问题。

上一篇下一篇

猜你喜欢

热点阅读