相关疑难解决方法(0)

Docker中的Neo4j - 最大堆大小导致硬崩溃137

我正在尝试在Docker容器中启动一个Neo4j 3.1实例(通过Docker-Compose),在OSX(El Capitan)上运行.一切都很好,除非我尝试将Neo可用的最大堆空间增加到默认值512MB以上.

根据文档,这可以通过添加环境变量来实现NEO4J_dbms_memory_heap_maxSize,然后使服务器包装器脚本相应地更新neo4j.conf文件.我已经检查过,它正在按照人们的预期进行更新.

问题是,当我运行docker-compose up旋转容器时,Neo4j实例崩溃了137状态代码.一个小小的研究告诉我,这是一个基于堆大小最大限制的linux硬崩溃.

$ docker-compose up
Starting elasticsearch
Recreating neo4j31
Attaching to elasticsearch, neo4j31
neo4j31          | Starting Neo4j.
neo4j31 exited with code 137
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 这是由于Docker还是OSX限制?
  2. 有没有办法可以修改这些限制?如果我将请求的限制降低到1GB,它会旋转,但是一旦我运行我的繁重查询仍然会崩溃(这导致需要增加堆空间).
  3. 我正在运行的查询是包含全文属性的大量节点(> 150k)的大规模更新,因此可以使用插件将它们同步到ElasticSearch.有没有办法让Neo逐步完成500个节点,只使用cypher(如果可以,我宁愿避免编写脚本,对此感觉有点脏).

我的docker-compose.yml如下:

---
version: '2'
services:
 # ---<SNIP>

  neo4j:
    image: neo4j:3.1
    container_name: neo4j31
    volumes:
      - ./docker/neo4j/conf:/var/lib/neo4j/conf
      - ./docker/neo4j/mnt:/var/lib/neo4j/import
      - ./docker/neo4j/plugins:/plugins 
      - ./docker/neo4j/data:/data
      - ./docker/neo4j/logs:/var/lib/neo4j/logs
    ports:
        - "7474:7474"
        - "7687:7687"
    environment:
        - NEO4J_dbms_memory_heap_maxSize=4G

 # ---<SNIP>
Run Code Online (Sandbox Code Playgroud)

heap-memory neo4j elasticsearch docker

4
推荐指数
1
解决办法
1714
查看次数

标签 统计

docker ×1

elasticsearch ×1

heap-memory ×1

neo4j ×1