Рекомендации по настройке сервера Neo4j - PullRequest
0 голосов
/ 20 октября 2010

Я устанавливаю систему на основе Neo4j в jRuby, работающем на 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 ]

2 голосов
/ 21 октября 2010

Вместо этого вы можете попытаться установить максимальное значение jruby-runtime-pool равным 1 (не проверяли это). Если вы используете многопоточное приложение (например, rails 3 и Neo4j), я думаю, что нет необходимости использовать более одного jruby-runtime, верно?

1 голос
/ 20 октября 2010

Метод Neo4j.start принимает необязательный экземпляр базы данных Neo.Я не пробовал, но если вы можете поэкспериментировать с созданием только одного экземпляра Neo и убедиться, что каждая среда выполнения сначала ищет этот общий экземпляр, ваш подход с несколькими средами исполнения может работать.общий экземпляр?Если вы работаете в контексте сервлета, вы можете поместить его в атрибут контекста сервлета.Поскольку это не так, лучше всего было бы написать небольшой класс-оболочку Java для запуска и хранения одного экземпляра и импорта этого класса Java в каждую среду выполнения.

...