单节点容器连续插入24小时后无响应

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

我们将 Cassandra 作为 SingleNode 容器与其他微服务一起运行。数据将流入其中一个微服务,该微服务将使用 gocql 驱动程序将数据连续写入 cassandra。

cassandra 的 docker-compose 文件

 ia_cassandradb:
    image: cassandra:4.1.6
    container_name: ia_cassandradb
    hostname: ia_cassandradb
    restart: unless-stopped
    ipc: "none"
    read_only: true
    security_opt:
    - no-new-privileges
    command: |
      /bin/bash -c "
      cp -r /etc/cassandra/* /etc/cassandra_tmp/.
      cp /etc/cassandra/cassandra_bk.yaml /etc/cassandra_tmp/cassandra.yaml
      if [[ $DEV_MODE == true ]]
      then
        sed -i '/client_encryption_options:/{n;s/.*/  enabled: false/}' /etc/cassandra_tmp/cassandra.yaml
      else
        cd /run/secrets/Cassandra
        rm -rf /etc/cassandra_tmp/dse-truststore.jks /etc/cassandra_tmp/secrets.p12 /etc/cassandra_tmp/certkey-keystore.jks
        keytool -keystore /etc/cassandra_tmp/dse-truststore.jks -storetype PKCS12 -importcert -file 'cacert.pem' -alias cacert -storepass cassandra -noprompt
        openssl pkcs12 -export -in DataStore_Server_server_certificate.pem -inkey DataStore_Server_server_key.pem -name localhost -out /etc/cassandra_tmp/secrets.p12 -password pass:cassandra
        keytool -importkeystore -deststorepass cassandra -destkeystore /etc/cassandra_tmp/certkey-keystore.jks -srckeystore /etc/cassandra_tmp/secrets.p12 -srcstoretype PKCS12 -srcstorepass cassandra
      fi
      while true; do nodetool clearsnapshot --all; nodetool compact; nodetool cleanup; sleep 600; done &
      /usr/local/bin/docker-entrypoint.sh
      "
    networks:
    - net_iso
    environment:
      AppName: "DataStore"
      CASSANDRA_CONF: /etc/cassandra_tmp
      DEV_MODE: ${DEV_MODE}
    volumes:
      # Mount for influxdb data directory and configuration
    - ./Certificates/Server_Certs/:/run/secrets/Cassandra:rw
    - vol_cassandra_tmp:/tmp
    - vol_cassandra_log:/opt/cassandra/logs
    - vol_cassandra_etc:/etc/cassandra_tmp
    - ${EII_INSTALL_PATH}/data/cassandra:/var/lib/cassandra/data
    - ../config_files/cassandra/cassandra.yaml:/etc/cassandra/cassandra_bk.yaml:ro

系统配置

13th Gen Intel(R) Core(TM) i9-13900K
RAM 32GB
Storage: 1TB SSD NVMe

其他系统也有同样的问题。尝试过第 12 代 64GB 内存

数据将连续传输到数据存储微服务,该微服务写入 cassandra 容器。我们有 120~150 次写入/秒,其中包含 json 和 blob 数据,每次写入接近 1mb。此外还会发生后续读取。

预期行为: 我们应该让所有写入始终成功。

实际行为: 最初写入速度非常快。执行几个小时后,写入速度开始减慢。 发布那个。写入开始失败,cassandra 无响应(也无法使用 cqlsh 连接)。 (这发生在24小时内)

显式重新启动容器将恢复 cassandra。

cassandra
1个回答
0
投票

您的帖子中确实没有足够的细节来帮助您,但我最好的猜测是节点过载并最终停止响应。

您似乎没有为 Cassandra 配置堆,因此其最大上限为 8GB。对于默认 GC G1 GC 来说,这个堆太小了。

G1 GC 在大堆上表现最佳,因此请考虑将

MAX_HEAP_SIZE
增至 16-24GB。

此外,不要对单节点集群抱有太大期望。如果节点实际上过载(您需要自己进行分析,因为您没有提供相关详细信息),建议的最小节点数是 3 个。干杯!

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