我在我的java应用程序中使用Cassandra DB。我使用Thrift客户端从我的Java应用程序连接Cassandra。如果Cassandra磁盘已满,则会自动终止。所以从我的Java程序中,我找不到为什么Cassandra停机的错误。如果磁盘中没有空间,Cassandra会终止
那么如何避免卡桑德拉的自动终止,或者他们的任何方式来识别磁盘满错误?
另外我没有物理访问cassandra驱动器。它运行在其他一些远程机器上。
我在我的java应用程序中使用Cassandra DB。我使用Thrift客户端从我的Java应用程序连接Cassandra。如果Cassandra磁盘已满,则会自动终止。所以从我的Java程序中,我找不到为什么Cassandra停机的错误。如果磁盘中没有空间,Cassandra会终止
那么如何避免卡桑德拉的自动终止,或者他们的任何方式来识别磁盘满错误?
另外我没有物理访问cassandra驱动器。它运行在其他一些远程机器上。
磁盘错误和一般的硬件/系统错误不是通常在任何应用程序中正确处理。数据库应该只在这种情况下提供尽可能多的耐久性,并且这是正确的行为 - 尽可能少地关闭和中断。
至于您的应用程序 - 如果无法连接到数据库,导致错误的原因没有区别。无论如何,你的应用程序无法使用。
有专门的工具可以监控您的机器,即Nagios。如果您是该服务器的管理员,请使用此类应用程序。当磁盘被填满时,您将收到一封电子邮件或文本。使用这样的工具,不要通过实施几百行代码来处理随机和非常罕见的情况,从而打开一扇敞开的大门。
设置ssh访问Casandra机器,并使用一些ssh客户端(如JSch)从您的Java客户端运行df /casandra/drive
(如果Linux)或fsutil volume diskfree c:\casandra\drive
(如果是Windows)。捕获简单的输出并解析以获得可用磁盘空间。这样,您的应用程序将监视那里发生的情况,并且可能应该提醒用户,并在磁盘空间不足的情况下拒绝添加数据。
如果磁盘空间不足,也可以使用标准监视工具或设置服务器端脚本发送消息。但是,这不会阻止应用程序崩溃,您需要在看到磁盘空间不足后采取措施。
大多数应用程序正在处理磁盘空间异常。他们投掷的solr示例“磁盘空间不足”错误。但抛出错误仍然solr运行。就像那样,我们可以在Cassandra中做任何事情而无需停止服务。有任何选项可用吗? – SANN3
另外我在很多系统中运行更多Cassandra。所以使用第三方工具很难监控所有的服务。如果服务停止意味着应用程序无法正常工作,但用户不知道确切原因。如果他知道原因,那么只有修复它才能知道。 – SANN3
这些工具完全是*用于监控多个系统的目的!你甚至检查了我在答案中发布的链接吗?严重的是,不要重新发明轮子! – Dariusz