Spring启动Cassandra读取超时

问题描述 投票:0回答:1

我有Spring Boot + cassandra Web应用程序的问题。它开始随着数据的增长而出现,现在它是超常见的场景。

所有查询有时都不起作用,CassandraRepository返回null。几秒钟之后它再次起作用,接下来的几秒钟它再次无法工作。所以Web应用程序不断返回200404响应。同样的查询一直在cqlsh中运行。

我正在使用:

  • 弹簧引导启动父#2.1.3
  • 弹簧引导起动数据卡桑德拉#2.1.3
  • Cassandra 3.11.3(多个集群)

数据结构:

CREATE KEYSPACE data WITH replication = {'class': 'NetworkTopologyStrategy', 'dc1': '2'}  AND durable_writes = true;

CREATE TABLE data.image (
    hash text PRIMARY KEY,
    image blob
) WITH bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

要配置Cassandra连接,我使用:

@Configuration
@EnableCassandraRepositories(basePackages = "...path...")
public class CassandraConfig extends AbstractCassandraConfiguration {

    @Bean
    public CassandraClusterFactoryBean cluster() {
        CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
        cluster.setContactPoints("127.0.0.1");
        cluster.setPort(91234);
        return cluster;
    }

要检索数据我正在使用CassandraRepository@Query(("select * from image where id = ?0")) QueryAnnotation。检索到的数据包含图像blob。

我认为读取超时是一个问题,服务器具有较慢的HDD磁盘而不是那么强大的CPU。但是如何使用spring boot starter覆盖此设置?

我试过用

SocketOptions so = new SocketOptions();
so.setConnectTimeoutMillis(10000);
so.setReadTimeoutMillis(20000);
cluster.setSocketOptions(so);

没有成功。

我还能做些什么来获得稳定的工作解决方案?

java spring-boot cassandra spring-data-cassandra
1个回答
0
投票

nodetool repair帮助 - >几天后一切都按预期开始工作。结论:写数据库太多了。

© www.soinside.com 2019 - 2024. All rights reserved.