The content of this documentation refers to all the Nuxeo products and modules. You may want to check the Nuxeo Platform technical documentation, the Nuxeo Studio documentation, the Core Developer Guide, or the Administration Guide.
Contributors, don't hesitate to move pages in the relevant spaces
Skip to end of metadata
Go to start of metadata

Why is a setup needed?

When you download a Nuxeo distribution it usually contains default settings so you can start and test the server easily.

These default settings are defined with the following goals:

  • make it easy to install and test a Nuxeo server
  • provide a simple deployment test environment for developers

This means the default setting are not designed to provide the best performances or the best robustness.

This page gives you directions on the configuration you should do on your server in order to make it ready for production or for load testing.

Configuring persistence

What is the default configuration

The default persistence configuration is lightweight and easy to use, but it is not made for performance and should not be used in production.

  • The default Nuxeo 5.1 uses
    • HSQL for SQL Data (directories, JBPM, Relations ...)
    • FileSystem persistence for Document repository
  • The default Nuxeo 5.2 uses
    • Derby for SQL Data (directories, JBPM, Relations ...)
    • FileSystem persistence for Document repository
  • The default Nuxeo 5.3 uses
    • H2 for SQL Data (directories, JBPM, Relations ...)
    • FileSystem persistence for Document repository
  • The default Nuxeo 5.4 and 5.5 uses
    • H2 for SQL Data (directories, JBPM, Relations ...)
    • Derby for Document repository metadata
    • FileSystem persistence for Document repository

Configuring the document storage for production

The repository configuration must be changed according to your specifications :

  • the database you want to use
  • if you want to externalize blobs on filesystem

For optimal performances use PostgreSQL and externalize the blobs to the filesystem.

See Nuxeo Book section about repository configuration for detailed configuration instructions.

Configuring persistence for other Nuxeo services

Other Nuxeo persistence services include:

  • relations and comments (RDF storage)
  • workflows (JBPM / Hibernate storage)
  • audit (JPA/Hibernate storage)
  • placeful configuration (JPA/Hibernate storage)
  • SQL Directory (JDBC storage)
  • UID generator (JPA/Hibernate storage)
  • Indexing storage (Lucene Compass storage)

Nuxeo Book describes the possible configurations.

For optimal performances you should :

  • use filesystem persistence for Compass/Lucene
  • use your SQL DB for all other services

Configuring Application Server

Tomcat configuration

You should edit the tomcat configuration file in oder to reduce the number of threads.

The file is located at $JBossHome/server/default/deploy/jbossweb-tomcat55.sar/server.xml.

Inside the http connector you should:

  • reduce the maxThreads attribute
  • make the acceptCount bigger

The maxThreads attribute should be reduced in order to avoid too many context switch during processing a lot of conccurent requests. The optimum setting is between 5 and 10 for a Linux server and could be a little bigger on a MS Windows system.

Configuring JMS

To configure JBoss Messages Queue persistence, see http://www.jboss.org/community/docs/DOC-9342 (ConfigJBossMQPersistence) or http://www.jboss.org/community/docs/DOC-9341 (ConfigJBossMQNullPersistence)

Setting null persistence for JBoss MQ increase application server performance.

Risk is only to loose last untreated transactions just before a server crash. Nuxeo data will stay coherent.

Configuring connection pools

The default Nuxeo connection pools have no specific size configured : the pool have the default size (20). Depending on your usage (number of concurent users) you may have to change this settings.

This is especially true if you do some Load Testing : performances will slow down drastically if the application server is always waiting for available connections.

You should also check your SQL DB settings to be sure that it can handle the needed number of connections.

Defining deployment architecture

Nuxeo supports different kinds of deployements:

  • single server
  • one stateful server (managing persistence) and N stateless servers (managing presentation and navigation)
  • 3 JVM deployment (Core / Indexing / WebPlatform)
  • custom deployements for custom projects

Nuxeo includes a packaging system based on Maven that can be used to assemble several EARs according to each project needs.

Configuring the JVM

Your JVM should be able to allocate enough memory.

For a production server or a load testing server between 2 and 4 GB is generally a good setting.

The JVM Parameters are: -Xms2048m -Xmx4096m.

These settings should be added:

  • inside the run.conf if you use Linuw/MacOS
  • inside the run.bat if you use MS Windows from the command line
  • inside the registry if you use MS Windows and the Java service

If you run your tests under MS Windows, you must be aware that the JVM5 can not allocate more that 1,3 GB. This is a knows JVM5/MSWindows limitation. In order to overcome this limitation, you should use the 64Bits versions of your Windows and use the JVM5 64bits.

Under Linux or MacOS there is no such limitation (it may depends on the kernel configuration).

Labels
  • None