[英]Neo4j performance on Windows Azure
首先,对我在该领域不了解的知识表示歉意,我的热情是开发新的有用的应用程序而不配置云服务器:)花了整整一天的时间来找出在Windows上运行Neo4j服务器的最佳配置,但没有成功:(我正在使用这篇出色的博客文章中的方法将简单节点写入空数据库:
http://maxdemarzi.com/2013/02/14/neo4j-and-gatling-sitting-in-a-tree-performance-test-ing/
模拟40个用户,每个用户发布250个新节点,则在不同的计算机上获得以下结果(糟糕吗?):
Windows Azure虚拟机A1 1,75GB 1个CPU内核:41 req / s 814 ms平均响应时间
Windows Azure虚拟机A2 3,50GB 2个CPU内核:41 req / s 971 ms平均响应时间
Windows本地计算机8GB Intel B950 2.10GHz:181 req / s 175 ms平均响应时间
Windows本地计算机4GB Intel i7-3537U 2.00GHz:140 req / s 280 ms平均响应时间
因此,这引起了一些明显的问题。 为什么A1和A2具有相似的结果? 为什么我的本地4GB机器的性能要比A2好得多?
我尝试将wrapper.java.initmemory和wrapper.java.maxmemory更改为1024、2048和3072,而没有任何重大的性能更改。 我也试图调整内存映射的缓冲区大小,但没有成功。 我是在Windows上运行吗? 使用这些机器我是否应该可以获得更好的结果? 真的不知道从哪里开始,任何建议将不胜感激!
关于您可以期待的问题:
对于仅创建节点(尽管每个创建都是单个事务),如果将cypher与参数一起使用,则应该可以轻松地远程处理1k至2k请求/秒。
如果批量处理,您应该可以轻松获得更多,这是我最近进行的一项测试。
JSON数据生成器: https : //dl.dropboxusercontent.com/u/14493611/cypher.rb
执行每个1000个节点和4个并发用户的1000个请求。
ab -H "X-Stream: true" -k -n 1000 -c 4 -p cypher_100.json \
-T 'application/json' -H "Accept: application/json" \
http://127.0.0.1:7474/db/data/transaction/commit
100k节点18s
按照Michaels的建议,我在Azure A2 Linux计算机上设置了neo4j-enterprise-2.1.5,并测试了10000个节点的简单创建:
class CreateSimpleNodes extends Simulation {
val httpConf = httpConfig
.baseURL("http://xxxxx.cloudapp.net:7474")
.acceptHeader("application/json")
val createNode = """{"query": "create me"}"""
val scn = scenario("Create Nodes")
.repeat(250) {
exec(
http("create node")
.post("/db/data/cypher")
.body(createNode)
.asJSON
.check(status.is(200)))
.pause(0 milliseconds, 1 milliseconds)
}
setUp(
scn.users(40).protocolConfig(httpConf)
)
}
它实际上比Windows A2的性能差。 它只能管理24 req / s,平均1655 ms。 现在,我比以前更加困惑:)特别是看到上面的Michaels基准数字时,测试代码是否有问题? 显而易见的问题仍然是一个谜,为什么A1和A2的结果相似,为什么我的本地4GB机器的性能要比A2好得多?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.