2016-11-20 3 views
5

Ich versuche, die Leistung meiner Cassandra (3.7+) Docker Container zu optimieren. Ich fand a presentation from 2015 das erwähnte (auf Folie 21), dass ich CAP_IPC_LOCK gewähren und das ulimit memlock festlegen sollte.Cassandra, JNA, Docker und CAP_IPC_LOCK

Nach ein wenig Graben, scheint es zwei Optionen sind im Grunde zu verhindern, dass das System die JVM tauschen, die moderne Versionen von Cassandra scheinen mit JNA zu erreichen.

Einstellung --ulimit memlock=-1:-1 auf meine Docker-Container hat den Effekt, dass

INFO 12:42:33 JNA mlockall successful 

gedruckt wird beim Booten, so dass ich nehme an, ich bin ganz eingestellt und fertig.

Muss ich immer noch --cap-add=CAP_IPC_LOCK und wenn ja, wie kann ich erkennen, ob ich es richtig eingestellt?

Antwort

1

Lass uns darüber nachdenken.

In Linux ein Prozess braucht die CAP_IPC_LOCK Fähigkeit mlockall zu nennen.

Jetzt sperrt mlockAll den gesamten virtuellen Adressraum des aufrufenden Prozesses in den RAM, wodurch verhindert wird, dass Speicher in den Swap-Bereich ausgelagert wird. Also im Wesentlichen nicht lassen Sie tauschen.

Die Installation von JNA hat den gleichen Effekt.

Dies ist von DataStax docs JNA

Installation Cassandra Gedächtnis verbessern kann usage.When installiert und konfiguriert, Linux Swap nicht die JVM und vermeidet somit ähnliche Performance-Probleme.

http://docs.datastax.com/en/cassandra/1.2/cassandra/install/installJnaDeb.html

Auch wenn Sie unten in den Protokollen sehen

JNA mlockall successful

Das bedeutet, dass JNA aktiviert ist.

Ich denke, Sie sind in Ordnung und müssen nicht CAP_IPC_LOCK hinzufügen.