高IOPS运行5分钟后,Cassandra抛出NoHostAvailableException

阿内什

我正在使用datastax cassandra 2.1驱动程序,并以8000 IOPS的速率执行读/写操作。我使用了池选项来配置我的会话,并使用单独的会话进行读写,每个会话都以连接点的形式连接到群集中的另一个节点。这可以说5分钟,但是之后我得到了很多异常,例如:

失败:com.datastax.driver.core.exceptions.NoHostAvailableException:尝试查询的所有主机均失败(尝试:/10.0.1.123:9042(com.datastax.driver.core.TransportException:[/10.0.1.123: [9042]连接已关闭),/ 10.0.1.56:9042(com.datastax.driver.core.exceptions.DriverException:尝试获取可用连接时超时(您可能希望增加每个主机连接的驱动程序数量)) )

有人可以在这方面帮助我吗?

异常要求我增加每个主机的连接数,但是可以为此参数设置多少值?我也无法设置CoreConnectionsPerHost超过2,因为它抛出异常,说2是最大值。

这就是我创建每个读/写会话的方式。

   PoolingOptions poolingOpts = new PoolingOptions();
           poolingOpts.setCoreConnectionsPerHost(HostDistance.REMOTE, 2);
           poolingOpts.setMaxConnectionsPerHost(HostDistance.REMOTE, 200);
           poolingOpts.setMaxSimultaneousRequestsPerConnectionThreshold(HostDistance.REMOTE, 128);
           poolingOpts.setMinSimultaneousRequestsPerConnectionThreshold(HostDistance.REMOTE, 2);
           cluster = Cluster
             .builder()
             .withPoolingOptions( poolingOpts )
             .addContactPoint(ip)
             .withRetryPolicy( DowngradingConsistencyRetryPolicy.INSTANCE )
             .withReconnectionPolicy( new ConstantReconnectionPolicy( 100L ) ).build();
           Session s =  cluster.connect(keySpace);
马克

您的问题可能实际上不出在您的代码或连接方式中。如果您说问题是在几分钟后发生的,那可能只是您的群集正变得超载,试图处理数据的接收而无法跟上。这种情况的典型征兆是,当您开始在cassandra system.log文件中看到JVM垃圾收集“ GC”消息时,太多的小垃圾堆单独地与大垃圾堆在一起可能意味着传入的客户端未响应导致这种情况。设想。在开始查看代码之前,请首先验证您的日志中没有出现太多此类事件。这是大型GC事件的一个很好的示例:

INFO [ScheduledTasks:1] 2014-05-15 23:19:49,678 GCInspector.java(第116行)GC用于ConcurrentMarkSweep:2个集合的2896毫秒,已使用310563800;最大值是8375238656

连接到群集时,有一些建议,其中每个真实群集仅包含一个Cluster对象。根据我在下面链接的文章(如果您已经研究过,则表示歉意):

  • 每个(物理)集群使用一个集群实例(每个应用程序生命周期)
  • 每个键空间最多使用一个会话实例,或者使用一个会话并在查询中显式指定键空间
  • 如果您多次执行一条语句,请考虑使用一条准备好的语句
  • 您可以使用批处理来减少网络往返次数,并进行原子操作

http://www.datastax.com/documentation/developer/java-driver/2.1/java-driver/fourSimpleRules.html

当您进行大量读取时,setFetchSize如果可以将其应用于您的代码,我绝对建议您使用

http://www.datastax.com/documentation/developer/java-driver/2.1/common/drivers/reference/cqlStatements.html

http://www.datastax.com/documentation/developer/java-driver/2.1/java-driver/reference/queryBuilderOverview.html

供您参考,以备不时之需。

http://www.datastax.com/documentation/developer/java-driver/2.1/common/drivers/reference/connectionsOptions_c.html

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

启动后5分钟运行脚本

来自分类Dev

5分钟后无声音

来自分类Dev

仅运行setInterval 5分钟?

来自分类Dev

重新启动系统后5或10分钟后运行脚本文件

来自分类Dev

每次运行后20分钟运行线程

来自分类Dev

并行运行两个scala函数,5分钟后返回最新值

来自分类Dev

运行5分钟后,我的libgdx游戏崩溃并变成黑色

来自分类Dev

5分钟后更新数据库

来自分类Dev

5分钟无更新后覆盖Firestore字段

来自分类Dev

5分钟后的任务计划程序

来自分类Dev

5分钟后本地DNS停止工作

来自分类Dev

每5分钟运行一次.sh

来自分类Dev

使用celery-beat完成上一个任务后5分钟内如何运行任务?

来自分类Dev

生产几分钟(5分钟)后,Rails 5服务器做出响应

来自分类Dev

30分钟后性能下降

来自分类Dev

1分钟后截图

来自分类Dev

每5分钟运行一次cronjob,但在第一次执行后停止运行吗?

来自分类Dev

正常运行30分钟后,同步/ fsync的通话速度变慢

来自分类Dev

正常运行30分钟后,同步/ fsync的通话速度变慢

来自分类Dev

运行60分钟后如何关闭Linux服务器?

来自分类Dev

引导一分钟后,Arch Linux运行脚本

来自分类Dev

在5分钟内安装Roo

来自分类Dev

bash到5分钟

来自分类Dev

Javascript:向上舍入5分钟

来自分类Dev

Time()通过5分钟选择

来自分类Dev

在5分钟内安装Roo

来自分类Dev

是否可以将cron作业设置为每小时5分钟后每小时运行一次?

来自分类Dev

如何仅在5分钟后创建新文件并将所有5分钟数据写入该文件

来自分类Dev

1-5分钟后,Android dispatchTouchEvent,onTouchEvent,onTouch停止工作