我試圖在OSX(El Capitan)上運行Docker容器中的Neo4j 3.1實例(通過Docker-Compose)。一切都很好,除非我嘗試增加超過默認512MB的Neo可用的最大堆空間。Docker中的Neo4j - 最大堆大小導致硬崩潰137
根據the docs,可以通過添加環境變量NEO4J_dbms_memory_heap_maxSize
來實現,該環境變量然後導致服務器包裝腳本相應地更新neo4j.conf
文件。我已經檢查過,並且正在按照預期進行更新。
的問題是,當我運行docker-compose up
旋轉起來的容器中,Neo4j的實例崩潰了與137狀態碼。有一項研究告訴我這是一個基於堆大小最大限制的linux hard-crash。
$ docker-compose up
Starting elasticsearch
Recreating neo4j31
Attaching to elasticsearch, neo4j31
neo4j31 | Starting Neo4j.
neo4j31 exited with code 137
我的問題:
- 這是由於碼頭工人或OSX的限制?
- 有沒有辦法可以修改這些限制?如果我將請求的限制放到1GB,它會旋轉起來,但是一旦我運行我的沉重查詢(這是造成對增加的堆空間需求的原因)仍然崩潰。
- 我正在運行的查詢是對包含全文屬性的大量節點(> 150k)進行大規模更新,以便它們可以使用插件同步到ElasticSearch。有沒有一種方法可以讓Neo一次完成500個節點,只使用密碼(我寧願避免寫一個腳本,對此感覺有點骯髒)。
我的碼頭工人,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>
謝謝,這是現貨。我確信我錯過了一些至關重要的事情(我對Docker相當陌生!)。我正在尋找docker-compose命令中的一些東西,但這樣做更有意義! – n00dle
不用擔心!當你剛開始的時候很容易忽視這些小事情!對不起,我無法回答你的neo4js問題。 –