Neo4j服务器设置建议

时间:2010-10-20 12:43:20

标签: jruby neo4j

我正在使用glassfish运行的jRuby中建立一个基于Neo4j的系统。与大多数rails系统一样,Glassfish允许某些机制运行多个实例。在glassfish的情况下,线程池大小有一个内部设置。

我的问题是我遇到了多次打开Neo4j数据库的问题,这导致了错误。我正在升级到Rails3以获取最新的Neo4j.rb,但同时也想确保我有正确的服务器设置。

以下是我的设置:

#
# GlassFish configuration.
#
# Please read the comments for each configuration settings before modifying.
#
# application environment. Default value development

environment: staging
# HTTP configuration
  http:
    # port
    port: 3000

    #address
    address: 0.0.0.0

    # context root. The default value is '/'
    contextroot: /

    # Grizzly is NIO based HTTP libraries used by GlassFish gem
    grizzly:
        chunking-enabled: true
        request-timeout: 30
        send-buffer-size: 8192
        max-keepalive-connextions: 256
        keepalive-timeout: 30
        thread-pool:
            idle-thread-timeout-seconds: 900
            max-queue-size: 4096
            max-thread-pool-size: 5
            min-thread-pool-size: 2                
#Logging configuration
log:
    log-level: all
jruby-runtime-pool:
    initial: 1
    min: 1
    max: 5
daemon:
    enable: true

jvm-options: -server -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewRatio=2 -XX:+DisableExplicitGC -Dhk2.file.directory.changeIntervalTimer=6000

2 个答案:

答案 0 :(得分:2)

您可以尝试将jruby-runtime-pool最大值设置为1(尚未对此进行测试)。 如果您正在运行多线程应用程序(如rails 3和Neo4j),我认为不需要使用多个jruby-runtime,对吧?

答案 1 :(得分:1)

方法Neo4j.start采用可选的Neo数据库实例。我没有尝试过,但如果您可以尝试确保只创建一个Neo实例并确保每个运行时首先查找该共享实例,那么您的多运行时方法可能会有效。

放置共享实例的位置?如果您在servlet上下文中运行,则可以将其放在servlet上下文属性中。既然你不是,最好的方法可能是编写一个小的Java包装类来启动和存储单个实例,并将该Java类导入每个运行时。