在Node.js脚本中完成Cassandra后,我真的需要调用client.shutdown()吗?

在Node.js脚本中完成Cassandra后,我真的需要调用client.shutdown()吗?,node.js,cassandra,pm2,cassandra-driver,Node.js,Cassandra,Pm2,Cassandra Driver,我一直试图通过Datastax查找有关Node.js Cassandra驱动程序的Cassandra会话的信息。我读到一篇文章说cassandra驱动程序自动管理会话,我不需要调用client.shutdown() 我正在寻找有关cassandra驱动程序如何管理会话的一般信息,如何查看所有活动的cassandra会话,以及是否需要调用shutdown(),或者每次运行脚本时都必须重新打开会话是否会适得其反 基于“pm2信息”,我没有看到大量的活动句柄,所以我不认为发生了什么错误,但我可能弄错了

我一直试图通过Datastax查找有关Node.js Cassandra驱动程序的Cassandra会话的信息。我读到一篇文章说cassandra驱动程序自动管理会话,我不需要调用client.shutdown()

我正在寻找有关cassandra驱动程序如何管理会话的一般信息,如何查看所有活动的cassandra会话,以及是否需要调用shutdown(),或者每次运行脚本时都必须重新打开会话是否会适得其反


基于“pm2信息”,我没有看到大量的活动句柄,所以我不认为发生了什么错误,但我可能弄错了。对于一个小脚本(85mb),Ram的使用率似乎有点高。

在DataStax驱动程序中,会话是一个有状态的对象,处理连接池并随时了解集群中节点的状态(避免向不可用的节点发送请求)。TCP套接字是打开的,最好在不再需要时关闭它。请参见此处以获取更多信息:

现在session.connect()可能需要一些时间:集群中的节点越多,打开到每个节点的连接的时间就越长。这就是为什么在使用FAAS时,最好在“冷启动”中初始化连接(避免为每个请求打开/关闭)

因此:

  • 当您不再需要连接(shutdown())时,请始终关闭连接(应用程序中的shutdown钩子)

  • 只要您需要,就让您的连接保持“活动”,不要为每个请求关闭连接,这不是无状态的

  • 是的,在处理程序函数之外连接客户端“更好”。使其保持满状态

    但是,AWS Lambda和nodeJS默认情况下会继续执行函数,直到事件循环为空或函数超时


    在处理程序外部创建客户端,设置
    context.callbackaitsforeptyeventloop=false
    ,不要调用
    client.shutdown

    不需要关闭连接的声明的来源是什么?我只能在没有明确设置为关闭连接的情况下找到报告的问题,就像我现在很难找到它一样。我会继续找的。