java - Cassandra - 无法启动,错误为 "Insufficient disk space to write 572 bytes"

标签 java cassandra jvm runtimeexception

我在尝试启动 Cassandra 时收到此错误。我在 /var/log/cassandra/var/lib/cassandra 上运行了 rm -rf *,并尝试运行 cassandra 再次,没有成功。任何想法?我一直在寻找类似的案例,但不是在 Cassandra 推出时,我发现没有任何东西可以帮助我解决这个问题。

root@test # cassandra
(...)
16:38:38.551 [MemtableFlushWriter:1] ERROR o.a.c.service.CassandraDaemon - Exception in thread Thread[MemtableFlushWriter:1,5,main]
java.lang.RuntimeException: Insufficient disk space to write 572 bytes
        at org.apache.cassandra.db.Directories.getWriteableLocation(Directories.java:349) ~[apache-cassandra-2.2.7.jar:2.2.7]
        at org.apache.cassandra.db.Memtable.flush(Memtable.java:324) ~[apache-cassandra-2.2.7.jar:2.2.7]
        at org.apache.cassandra.db.ColumnFamilyStore$Flush.run(ColumnFamilyStore.java:1165) ~[apache-cassandra-2.2.7.jar:2.2.7]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_65]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_65]
        at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_65]
16:38:41.785 [ScheduledTasks:1] INFO  o.a.cassandra.locator.TokenMetadata - Updating topology for all endpoints that have changed

仅供引用,如果我尝试再次运行cassandra,我会得到

[main] ERROR o.a.c.service.CassandraDaemon - Port already in use: 7199; nested exception is:
        java.net.BindException: Address already in use

看来“CassandraDaemon”还活着;但如果我想运行 cqlsh 我收到此错误:

root@test # cqlsh
Warning: custom timestamp format specified in cqlshrc, but local timezone could not be detected.
Either install Python 'tzlocal' module for auto-detection or specify client timezone in your cqlshrc.

Connection error: ('Unable to connect to any servers', {'127.0.0.1': error(111, "Tried connecting to [('127.0.0.1', 9042)]. Last error: Connection refused")})

最后,free -m 命令给了我

              total        used        free      shared  buff/cache   available
Mem:          15758        8308         950        1440        6499        5576
Swap:          4095        2135        1960

感谢您的帮助!

编辑:以下是我在 Cassandra 启动期间收到的警告消息:

11:36:14.622 [main] WARN  o.a.c.config.DatabaseDescriptor - Small commitlog volume detected at /var/lib/cassandra/commitlog; setting commitlog_total_space_in_mb to 2487.  You can override this in cassandra.yaml
11:36:14.623 [main] WARN  o.a.c.config.DatabaseDescriptor - Only 17 MB free across all data volumes. Consider adding more capacity to your cluster or removing obsolete snapshots
11:36:14.943 [main] WARN  o.a.cassandra.service.StartupChecks - jemalloc shared library could not be preloaded to speed up memory allocations
11:36:14.943 [main] WARN  o.a.cassandra.service.StartupChecks - JMX is not enabled to receive remote connections. Please see cassandra-env.sh for more info.
11:36:14.943 [main] WARN  o.a.cassandra.service.StartupChecks - OpenJDK is not recommended. Please upgrade to the newest Oracle Java release
11:36:14.954 [main] WARN  o.a.cassandra.utils.SigarLibrary - Cassandra server running in degraded mode. Is swap disabled? : false,  Address space adequate? : true,  nofile limit adequate? : false, nproc limit adequate? : true

最佳答案

正如我在之前的评论中所说,该问题似乎是由 /var 文件夹达到其限制大小触发的,因为我用于提取数据的 Nifi 在我的配置。因此,删除无用的日志并密切关注 /var 文件夹似乎可以防止该错误。

关于java - Cassandra - 无法启动,错误为 "Insufficient disk space to write 572 bytes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39576628/

相关文章:

java - 按需类型导入声明导入什么?

java - Java 中的 String.Format (.NET) 等价物?

node.js - 使用nodejs对cassandra表上100,000个用户的记录应用更新查询。连接繁忙问题

cassandra - 是否可以在不指定第一个的情况下按第二个簇键进行过滤?

clojure - 类型删除如何帮助 Clojure 存在?

java - 将数据库结果与 html 表进行比较 - Selenium Webdriver - Java

java - 从数据库迭代和处理整个表的最佳方法是什么?

cassandra - 无法删除多行,获取 "Some partition key parts are missing: identifier"

java - java应用程序的系统内存使用量与堆使用量相比巨大

java - 什么是 java.lang.reflect.Field#slot?