docker-compose - 无法启动cassandra : Unable to lock JVM memory (ENOMEM)

标签 docker-compose cassandra cassandra-3.0

我正在尝试使用 docker-compose 启动 cassandra 容器。我从我的 macbook 终端发出以下命令。

docker-compose -f src/main/docker/cassandra.yml up 

我的 cassandra.yml 文件位于下面

version: '2'
services:
    primecast-cassandra:
        image: cassandra:3.9
        # volumes:
        #     - ~/volumes/jhipster/primecast/cassandra/:/var/lib/cassandra/data
        ports:
            - 7000:7000
            - 7001:7001
            - 7199:7199
            - 9042:9042
            - 9160:9160
    primecast-cassandra-migration:
        extends:
            file: cassandra-migration.yml
            service: primecast-cassandra-migration
        environment:
            - CREATE_KEYSPACE_SCRIPT=create-keyspace.cql

但是,当我运行 docker-compose 命令来启动 cassandra 服务时,我在终端上收到一些警告并最终停止。

    primecast-cassandra_1            | WARN  14:33:45 Unable to lock JVM memory (ENOMEM). 

This can result in part of the JVM being swapped out, especially with mmapped I/O enabled.  Increase RLIMIT_MEMLOCK or run Cassandra as root.

感谢您的帮助 谢谢

最佳答案

本质上,此消息告诉您需要为特定用户的锁定内存指定 memlock unlimited 来限制 Linux 系统资源。根据documentation on recommended production settings ,解决此问题的正常(非 Docker)方法是调整 /etc/security/limits.conf 文件(或等效文件),如下所示:

cassandra - memlock unlimited

在上面的示例中,cassandra 是运行 Cassandra 的用户。如果您以其他用户身份运行 Cassandra,则需要相应更改或仅使用星号 (*) 为所有用户强制执行该设置。例如:

* - memlock unlimited

在本例中为 Docker Compose v2 , ulimits 应该是服务配置下的有效条目。将 memlock 设置为 -1,以便软限制和硬限制都是“无限制”:

primecast-cassandra:
    image: cassandra:3.9
    ulimits:
        memlock: -1
    ports:

关于docker-compose - 无法启动cassandra : Unable to lock JVM memory (ENOMEM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69407951/

相关文章:

nosql - Redis 与 Cassandra(Bigtable 数据模型)

Cassandra 收到了对等方的无效八卦生成

选择错误 Cassandra 'Row' 对象没有属性 'values'

cassandra - 如何可视化 Cassandra 中的原子性?

docker - Docker镜像可从浏览器访问Docker容器

mysql - 如何将一个容器中的 mysql 数据库绑定(bind)到运行我的 django 博客应用程序的另一个容器(使用 docker-compose)

java - cassandra db 慢速连接

java - 如何使用java在Cassandra 3.0中的集合文字内绑定(bind)变量?

php - 为什么将 docker-compose exec 的输出管道输出到 grep,会破坏它?

docker - 如何在docker群模式下使用Express API网关?