作为此问题的后续:Enable one time Cassandra Authentication and Authorization check and cache it forever
我想了解我收到请求超时
错误,如果我在服务器日志中看到我只收到以下错误。
ERROR [SharedPool-Worker-34] 2018-06-01 10:40:36,589 ErrorMessage.java:338 - Unexpected exception during request
java.lang.RuntimeException: org.apache.cassandra.exceptions.ReadTimeoutException: Operation timed out - received only 0 responses.
at org.apache.cassandra.auth.CassandraRoleManager.getRole(CassandraRoleManager.java:489) ~[apache-cassandra-3.0.8.jar:3.0.8]
at org.apache.cassandra.auth.CassandraRoleManager.getRoles(CassandraRoleManager.java:269) ~[apache-cassandra-3.0.8.jar:3.0.8]
at org.apache.cassandra.auth.RolesCache.getRoles(RolesCache.java:66) ~[apache-cassandra-3.0.8.jar:3.0.8]
at org.apache.cassandra.auth.Roles.hasSuperuserStatus(Roles.java:51) ~[apache-cassandra-3.0.8.jar:3.0.8]
at org.apache.cassandra.auth.AuthenticatedUser.isSuper(AuthenticatedUser.java:71) ~[apache-cassandra-3.0.8.jar:3.0.8]
我知道我没有在 cassandra.yaml 中启用身份验证和授权的缓存,但我仍然有人可以解释一下为什么我经常收到此错误,这是 Cassandra 中性能成本高昂的操作吗?
最佳答案
如果您使用默认的 Cassandra 用户,则这是使用 QUORUM 的正常查询,任何其他用户都应使用 LOCAL_ONE。所以在“运营成本”方面并没有什么异常。但给出错误消息(具体来说,这部分是:“操作超时 - 仅收到 0 个响应。”)意味着您可能有重载的节点,无法响应您的查询。
使用nodetool tpstats快速查看您的节点将显示您在提供读取服务时是否遇到问题(查找被阻止、所有时间被阻止强>和/或<强>删除强>读取)。
身份验证查询是在您执行的每个查询中完成的(AFAIK),因此您应该为它们启用缓存(并避免集群过载)
相关文档:https://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/secureConfigNativeAuth.html
关于cassandra - 为什么连接经常超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50653982/