Note
This documentation is for the new OMERO 5.2 version. See the latest OMERO 5.1.x version or the previous versions page to find documentation for the OMERO version you are using if you have not upgraded yet.
There are several ways that OMERO, or any server system, can scale. Optimizing your system for more than one of these factors is non-trivial, but we try to lay out some guidelines below for what has worked, what almost certainly will not work, and what – under the right circumstances – might be optimal.
The bottlenecks for concurrent invocations are:
Database servers, in general, have a maximum number of allowed connections. In postgres, the default max_connections is 100, though in many cases this will be significantly lower due to the available shared memory (SHMMAX). If OMERO were to use direct connections to the database, after max_connections invocations, all further attempts to connect to the server would fail with “too many connection” exceptions. Instead, OMERO uses a connection pool in front of Postgres, which manages many more simultaneous attempts to connect to the database.
With the default max_connection set to 64, it is possible to execute 500 queries simultaneously without database exceptions. Instead, one receives server exceptions.
In OMERO.blitz, too many (500+ on the default configuration) simultaneous invocations will result in ConnectionLost exceptions. We are currently working on ways to extend the number of single invocations on one server, but a simpler solution is to start another OMERO.blitz server.
The bottlenecks for throughput are:
See also