Neo4j卡在“上”;“运行”;执行查询时
我想让Neo4j数据库服务器处理我的DigitalOcean droplet。服务器是容器化的(Docker),在本地工作正常,但是当推送到服务器时,查询无法执行,我只剩下下面的内容 容器本身在运行时不显示任何日志,从上面的屏幕截图可以看出,远程界面工作正常。这不是基于权限的错误,因为装载的卷在运行容器时正在写入文件夹 Neo4j.log文件如下所示:Neo4j卡在“上”;“运行”;执行查询时,neo4j,Neo4j,我想让Neo4j数据库服务器处理我的DigitalOcean droplet。服务器是容器化的(Docker),在本地工作正常,但是当推送到服务器时,查询无法执行,我只剩下下面的内容 容器本身在运行时不显示任何日志,从上面的屏幕截图可以看出,远程界面工作正常。这不是基于权限的错误,因为装载的卷在运行容器时正在写入文件夹 Neo4j.log文件如下所示: 2017-02-10 17:26:52.753+0000 INFO No SSL certificate found, generating
2017-02-10 17:26:52.753+0000 INFO No SSL certificate found, generating a self-signed certificate..
2017-02-10 17:26:54.646+0000 INFO Starting...
2017-02-10 17:26:56.480+0000 INFO Bolt enabled on 127.0.0.1:7687.
2017-02-10 17:27:04.282+0000 INFO Started.
2017-02-10 17:27:08.763+0000 INFO Remote interface available at http://127.0.0.1:7474/
2017-02-10 17:27:09.680+0000 WARN Failed authentication attempt for 'neo4j' from 127.0.0.1
2017-02-10 17:27:10.503+0000 INFO Neo4j Server shutdown initiated by request
2017-02-10 17:27:10.585+0000 INFO Stopping...
2017-02-10 17:27:10.780+0000 INFO Stopped.
请注意失败的身份验证尝试。有什么想法吗
更新
我已将服务器升级到1gb RAM,并将堆大小降至128mb。我的ram使用率远低于100%,有大量的交换空间,但问题仍然存在
您的数据库中有多少数据?如果你有100万用户,它将返回所有用户,这很可能会冻结你的浏览器 你想要实现什么 确保为docker映像配置堆+页面缓存,并为数据目录使用外部卷(而不是
aufs
)
从Github复制我的答案以增加曝光率 通过阅读日志,我有一个强烈的猜测,你是最大限度地发挥了作用 猛击你的水滴。看来你的例子必须开始了 交换,这将导致数据库不可用:
2017-02-11 15:59:25.918+0000 INFO [o.n.k.i.DiagnosticsManager] System memory information:
2017-02-11 15:59:25.925+0000 INFO [o.n.k.i.DiagnosticsManager] Total Physical memory: 992.82 MB
2017-02-11 15:59:25.925+0000 INFO [o.n.k.i.DiagnosticsManager] Free Physical memory: 186.12 MB
2017-02-11 15:59:25.926+0000 INFO [o.n.k.i.DiagnosticsManager] Committed virtual memory: 2.04 GB
2017-02-11 15:59:25.926+0000 INFO [o.n.k.i.DiagnosticsManager] Total swap space: 6.84 GB
2017-02-11 15:59:25.926+0000 INFO [o.n.k.i.DiagnosticsManager] Free swap space: 6.47 GB
2017-02-11 15:59:25.926+0000 INFO [o.n.k.i.DiagnosticsManager] JVM memory information:
2017-02-11 15:59:25.926+0000 INFO [o.n.k.i.DiagnosticsManager] Free memory: 82.07 MB
2017-02-11 15:59:25.927+0000 INFO [o.n.k.i.DiagnosticsManager] Total memory: 128.00 MB
2017-02-11 15:59:25.927+0000 INFO [o.n.k.i.DiagnosticsManager] Max memory: 128.00 MB
我自己做了一些实验,在低内存VPS上运行Neo4j
实例和我的结论是,在计算机上运行它是不可行的
只有1GB内存的机器(我自己的Linode实例有)。假设
您还希望在该机器上运行Neo4j以外的任何东西
原因是除了Java堆和Neo4j页面缓存之外,您还可以
获取某些其他内存开销。朗讯将分配部分资金
拥有堆外内存(可能至少32MB)。Java本身似乎是
需要比配置的堆大小更多的内存
调查所需的最小内存
要查看实际内存使用情况,您可以使用docker stats
指挥部。例如,考虑以下调用:
docker run --rm --name=neo -e NEO4J_AUTH=none -e NEO4J_dbms_memory_pagecache_size=8M -e NEO4J_dbms_memory_heap_maxSize=100M -p 7474:7474 -p 7687:7687 neo4j:3.1.1-enterprise
最初,您可能会怀疑这需要大约110MB的RAM,对吗?好吧,你错了:
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
a8a86807064b 0.35% 370.1 MiB / 23.44 GiB 1.54% 2.62 kB / 690 B 119 MB / 3.01 MB 43
事实上,这几乎是预期的4倍。现在让我们看看如果将堆大小增加100MB会发生什么:
docker run --rm --name=neo -e NEO4J_AUTH=none -e NEO4J_dbms_memory_pagecache_size=8M -e NEO4J_dbms_memory_heap_maxSize=200M -p 7474:7474 -p 7687:7687 neo4j:3.1.1-enterprise
结果:
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
d92e8ecde4a8 0.43% 497.8 MiB / 23.44 GiB 2.07% 7.12 kB / 59.3 kB 119 MB / 3.01 MB 49
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
2474e209f64e 0.38% 472.3 MiB / 23.44 GiB 1.97% 2.62 kB / 690 B 119 MB / 3.01 MB 43
内存使用量增加了将近100 MB。那么现在,如果我们将Neo4j页面缓存大小增加到100MB,会怎么样
docker run --rm --name=neo -e NEO4J_AUTH=none -e NEO4J_dbms_memory_pagecache_size=100M -e NEO4J_dbms_memory_heap_maxSize=200M -p 7474:7474 -p 7687:7687 neo4j:3.1.1-enterprise
结果:
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
d92e8ecde4a8 0.43% 497.8 MiB / 23.44 GiB 2.07% 7.12 kB / 59.3 kB 119 MB / 3.01 MB 49
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
2474e209f64e 0.38% 472.3 MiB / 23.44 GiB 1.97% 2.62 kB / 690 B 119 MB / 3.01 MB 43
启动时没有明显的变化,所以我们可以假设这可能
以后可能会分配100MB。为了验证这一点,我
通过重复创建电影图,对数据库应用了一些负载
这导致了记忆的轻微增长:
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
77f067c9695c 0.36% 514.2 MiB / 23.44 GiB 2.14% 644 kB / 3.56 MB 120 MB / 4.19 MB 51
判决
看看上面的数字,这是Neo4j内存需求的大致概念(也有一些填充以允许索引内存需求):
您确定UI已连接到数据库吗?(例如,有时螺栓连接存在问题)此外,您是否尝试使用
限制1
进行查询(我不知道您有多少数据,所以这可能无关紧要)。我几乎没有数据。我怀疑这可能是由于缺少RAM。我从一个空卷装载开始,它仍然会导致问题。增加RAM似乎可以使其在短时间内工作。如果页面文件和堆减少解决了问题,我会通知您。