-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deadlock situation when Cassandra disk is full #49
Comments
It seems because of Cassandra's compaction strategy we should aim to never go above 50% disk usage, see: |
A guideline is to keep disk size per node at around 500GB (which means we can effectively use 250GB): https://wikitech.wikimedia.org/wiki/Cassandra/Hardware |
Ha, interesting.
On Sat, 23 Feb 2019 at 13:15, Etienne Dilocker ***@***.***> wrote:
A guideline is to keep disk size per node at around 500GB (which means we
can effectively use 250GB):
https://wikitech.wikimedia.org/wiki/Cassandra/Hardware
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#49 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AFQQKqX-mAGZVzWDbY_H8fdwPa_qwEbLks5vQTDrgaJpZM4bN1pQ>
.
--
+31 (0)610 935 031
PO Box 95263
1090HG Amsterdam
|
New Learning about scaling Cassandra clusters: When ownership of partitions is lost (because a new node has joined), this space is not freed up automatically. One has to manually run |
Interesting findings @etiennedi. I agree with your recommendation, scaling Cassandra (or pretty much any database) should be a manual task. In addition to the complexity of auto-scaling a database, usually the point at which a database would trigger an autoscale is when it's busiest and therefore a bad time to scale. As you mention above, the crucial piece is having proper monitoring in place. If we know which metrics to trigger on (disk space) it is straightforward to set up an alert at a certain value (e.g. 50%) to have someone scale the cluster. |
Last night on 3 of my 10 cassandra pods, the attached PVs ran completely full. Unfortunately that left us in a bit of a deadlock situation:
StatefulSet
is configured withOrderedReady
. This means new pods won't be scheduled, because existing pods are crashingI think I just solved this situation manually like this:
kubectl exec
in there/var/lib/cassandra/commitlog
However, this is not something we can do in a production setting, because I literally just deleted 8GB of data per crashing pod. In real life we'd have no way of knowing which data would be deleted and also couldn't import it again.
So I think for production we either need:
StatefulSet
based on the available disk space on the attached PVs. Is there such a thing, @idcrosby ?The text was updated successfully, but these errors were encountered: