Note
This documentation is for OMERO 5.2. This version is now in maintenance mode and will only be updated in the event of critical bugs or security concerns. OMERO 5.3 is expected in the first quarter of 2017.
The primary form of configuration is via the use of key/value properties, stored in etc/grid/config.xml and read on server startup. Backing up and copying these properties is as easy as copying this file to a new server version.
The etc/omero.properties file of your distribution defines all the default configuration properties used by the server. Changes made to the file are not recognized by the server. Instead, configuration options can be set using the omero config set command:
$ bin/omero config set <parameter> <value>
When supplying a value with spaces or multiple elements, use single quotes. The quotes will not be saved as part of the value (see below).
To remove a configuration option (to return to default values where mentioned), simply omit the value:
$ bin/omero config set <parameter>
These options will be stored in a file: etc/grid/config.xml which you can read for reference. DO NOT edit this file directly.
You can also review all your settings by using:
$ bin/omero config get
which should return values without quotation marks.
A final useful option of omero config edit is:
$ bin/omero config edit
which will allow for editing the configuration in a system-default text editor.
Note
Please use the escape sequence \" for nesting double quotes (e.g. "[\"foo\", \"bar\"]") or wrap with ' (e.g. '["foo", "bar"]').
Examples of doing this are on the main Unix and Windows pages, as well as the LDAP installation page.
The following properties need to be correctly set for all installations of the OMERO.server. Depending on your set-up, default values may be sufficient.
Checksum algorithms supported by the server for new file uploads, being any comma-separated non-empty subset of:
In negotiation with clients, this list is interpreted as being in descending order of preference.
Default: SHA1-160, MD5-128, Murmur3-128, Murmur3-32, CRC-32, Adler-32, File-Size-64
Default: /OMERO/
Template for FS managed repository paths. Allowable elements are:
%user% bob
%userId% 4
%group% bobLab
%groupId% 3
%year% 2011
%month% 01
%monthname% January
%day% 01
%time% 15-13-54.014
%institution% University of Dundee
%hash% 0D2D8DB7
%increment% 14
%subdirs% 023/613
%session% c3fdd5d8-831a-40ff-80f2-0ba5baef448a
%sessionId% 592
%perms% rw----
/ path separator
// end of root-owned directories
These are described further at FS configuration options
The path must be unique per fileset to prevent upload conflicts, which is why %time% includes milliseconds.
A // may be used as a path separator: the directories preceding it are created with root ownership, the remainder are the user’s. At least one user-owned directory must be included in the path.
The template path is created below omero.managed.dir, e.g. /OMERO/ManagedRepository/$omero.fs.repo.path/
Default: %user%_%userId%//%year%-%month%/%day%/%time%
Rules to apply to judge the acceptability of FS paths for writing into omero.managed.dir, being any comma-separated non-empty subset of:
Minimally, the “required” appropriate for the server is recommended. Also applying “optional” rules may make sysadmin tasks easier, but may be more burdensome for users who name their files oddly. “local” means “Windows” or “UNIX” depending on the local platform, the latter being applied for Linux and Mac OS X.
Default: Windows required, UNIX required
Default: ${omero.data.dir}/ManagedRepository
Clients disable download as jpg/png/tiff above max pixel count.
Default: 144000000
Server-side scripts used in IScript service Clients shouldn’t display.
Default: /omero/figure_scripts/Movie_Figure.py, /omero/figure_scripts/Split_View_Figure.py, /omero/figure_scripts/Thumbnail_Figure.py, /omero/figure_scripts/ROI_Split_Figure.py, /omero/export_scripts/Make_Movie.py, /omero/setup_scripts/FLIM_initialise.py, /omero/import_scripts/Populate_ROI.py
Description of the “Orphaned images” container.
Default: This is a virtual container with orphaned images. These images are not linked anywhere. Just drag them to the selected container.
Flag to show/hide “Orphaned images” container. Only accept “true” or “false”
Default: true
Name of the “Orphaned images” container located in client tree data manager.
Default: Orphaned Images
Initial client image viewer zoom level for big images
Default: 0
The string that will be used as the base for LSIDs in all exported OME objects including OME-XML and OME-TIFF. It’s usually not necessary to modify this value since the database UUID (stored in the database) is sufficient to uniquely identify the source.
Default: export.openmicroscopy.org
Implementation of the org.hibernate.dialect.Dialect interface which will be used to convert HQL queries and save operations into SQL SELECTs and DML statements.
(PostgreSQL default)
Default: ome.util.PostgresqlDialect
JDBC driver used to access the database. Other drivers can be configured which wrap this driver to provide logging, monitoring, etc.
(PostgreSQL default)
Default: org.postgresql.Driver
The host name of the machine on which the database server is running. A TCP port must be accessible from the server on which OMERO is running.
Default: localhost
The patch version of the database which is in use. This value need not match the patch version of the server that is is being used with. Any changes by developers to the database schema will result in a bump to this value.
Default: 0
Sets the number of database server connections which will be used by OMERO. Your database installation will need to be configured to accept at least as many, preferably more, connections as this value.
Default: 10
TCP port on which the database server is listening for connections. Used by the JDBC driver to access the database. Use of a local UNIX socket is not supported.
(PostgreSQL default)
Default: 5432
Default: 10
Default values for the current profile will be hard-coded into the hibernate.properties file in the model-*.jar. By using a different jar, you can modify the defaults.
Note: some other properties are defined in the file etc/profiles/$omero.db.profile Especially of importance is omero.db.port
Default: psql
Implementation of the ome.util.SqlAction interface which will be used to perform all direct SQL actions, i.e. without Hibernate.
(PostgreSQL default)
Default: ome.util.actions.PostgresSqlAction
Whether JMX statistics are collected for DB usage (by Hibernate, etc)
Default: true
Version of the database which is in use. This value typically matches the major.minor version of the server that it is being used with. Typically, only developers will change this version to bump to a new major version.
Default: OMERO5.2
Default: false
Default: nullRedirector
registry_timeout is the milliseconds which the registry and other services will wait on remote services to respond.
Default: 5000
Contains other parameters which should be passed to the JVM. The value of “append” is treated as if it were on the command-line and so will be separated on whitespace. For example, ‘-XX:-PrintGC -XX:+UseCompressedOops’ would results in two new arguments.
Default: [empty]
Toggles on or off heap dumps on OOMs. Default is “off”. The special value “tmp” will create the heap dumps in your temp directory.
Default: [empty]
Suggestion for strategies as to the maximum memory that they will use for calculating JVM settings (MB).
Default: 48000
Suggestion for strategies as to the minimum memory that they will use for calculating JVM settings (MB).
Default: 3414
Used only by the percent strategy. An integer between 0 and 100 which is the percent of active memory that will be used by the service.
Default: [empty]
Explicit value for the MaxPermSize argument to the JVM, e.g. “500M”. Ignored for Java8+
Default: [empty]
Memory strategy which will be used by default. Options include: percent, manual
Default: percent
Manual override of the total system memory that OMERO will think is present on the local OS (MB). If unset, an attempt will be made to detect the actual amount: first by using the Python library psutil and if that is not installed, by running a Java tool. If neither works, 4.0GB is assumed.
Default: [empty]
LDAP server base search DN, i.e. the filter that is applied to all users. (can be empty in which case any LDAP user is valid)
Default: ou=example, o=com
Default: (objectClass=groupOfNames)
Default: name=cn
Without a prefix the “new_user_group” property specifies the name of a single group which all new users will be added to. Other new_user_group strings are prefixed with :x: and specify various lookups which should take place to find one or more target groups for the new user.
:ou: uses the final organizational unit of a user’s dn as the single OMERO group e.g. omero.ldap.new_user_group=:ou:
:attribute: uses all the values of the specified attribute as the name of multiple OMERO groups. e.g. omero.ldap.new_user_group=:attribute:memberOf
Like :attribute:, :filtered_attribute: uses all the values of the specified attribute as the name of multiple OMERO groups but the attribute must pass the same filter as :query: does. e.g. omero.ldap.new_user_group=:filtered_attribute:memberOf
Similar to :attribute:, :dn_attribute: uses all the values of the specified attribute as the DN of multiple OMERO groups. e.g. omero.ldap.new_user_group=:dn_attribute:memberOf
A combination of filtered_attribute and dn_attribute, :filtered_dn_attribute: uses all of the values of the specified attribute as the DN of multiple OMERO groups but the attribute must pass the same filter as :query: e.g. omero.ldap.new_user_group=:filtered_dn_attribute:memberOf
:query: performs a query for groups. The “name” property will be taken as defined by omero.ldap.group_mapping and the resulting filter will be AND’ed with the value group_filter (above) e.g. omero.ldap.new_user_group=:query:(member=@{dn})
:bean: looks in the server’s context for a bean with the given name which implements ome.security.auth.NewUserGroupBean e.g. omero.ldap.new_user_group=:bean:myNewUserGroupMapperBean
Default: default
A query element to check if user who is being created via the new_user_group setting should be made a “manager”, i.e. owner, of the queried group. E.g. omero.ldap.new_user_group_owner=(owner=@{dn}) will use the ‘manager’ attribute to set the ‘owner’ flag in the database. This query element is appened to any query used by new_user_group with an AND.
This property is not used by new_user_group type ‘default’ and only potentially by :bean:.
Default: [empty]
Available referral options are: “ignore”, “follow”, or “throw” as per the JNDI referral documentation.
Default: ignore
Whether or not values from LDAP will be synchronized to OMERO on each login. This includes not just the username, email, etc, but also the groups that the user is a member of.
Note
Admin actions carried out in the clients may not survive this synchronization e.g. LDAP users removed from an LDAP group in the UI will be re-added to the group when logging in again after the synchronization.
Default: false
Set the URL of the LDAP server. A SSL URL for this property would be of the form: ldaps://ldap.example.com:636
Default: ldap://localhost:389
Default: (objectClass=person)
Default: omeName=cn, firstName=givenName, lastName=sn, email=mail, institution=department, middleName=middleName
the password to connect to the smtp server (if required; can be empty)
Default: [empty]
Default: 60000
Default: false
Default: javax.net.SocketFactory
Default: false
Default: ${omero.mail.port}
Default: false
Default: 60000
other smtp parameters; see org.springframework.mail.javamail.JavaMailSenderImpl
Default: smtp
the username to connect to the smtp server (if required; can be empty)
Default: [empty]
Which bean to use: nullMetrics does nothing defaultMetrics uses the properties defined below
Default: defaultMetrics
Number of minutes to periodically print to slf4j 0 or lower disables the printout.
Default: 60
Default: 0
Default: 1800000
Default: 120000
Sets the duration of inactivity in milliseconds after which a login is required.
Default: 600000
Default: 5000
Default: 5000
Default: 50
Default: 5
Time in milliseconds after which a single method invocation will print a ERROR statement to the server log. If ERRORs are frequently being printed to your logs, you may want to increase this value after checking that no actual problem exists. Values of more than 60000 (1 minute) are not advised.
Default: 20000
Value for the indexer is extended to 1 day
Default: 86400000
Time in milliseconds after which a single method invocation will print a WARN statement to the server log.
Default: 5000
Value for the indexer is extended to 1 hour
Default: 3600000
Default: 1000
Default: 1000
Default: 10000
Name of the spring bean which will be used to calculate the backoff (in ms) that users should wait for an image to be ready to view.
Default: ome.io.nio.SimpleBackOff
Number of instances indexed per indexing. (Ignored by pixelDataEventLogQueue)
Default: 50
Polling frequency of the pixeldata processing. Set empty to disable pixeldata processing.
Cron Format: seconds minutes hours day-of-month month day-of-week year (optional). For example, “0,30 * * * * ?” is equivalent to running every 30 seconds. For more information download the latest 1.x version of the Quartz Job Scheduler and review docs/api/org/quartz/CronExpression.html within the distribution.
Default: */4 * * * * ?
Whether the PixelData.dispose() method should try to clean up ByteBuffer instances which may lead to memory exceptions. See ticket #11675 for more information. Note: the property is set globally for the JVM.
Default: true
EventLogLoader that will be used for loading EventLogs for the action “PIXELDATA”. Choices include: pixelDataEventLogQueue and the older pixelDataPersistentEventLogLoader
Default: pixelDataEventLogQueue
Default: 3192
Default: 3192
Maximum time in milliseconds that file parsing can take without the parsed metadata being cached to BioFormatsCache.
Default: 0
Instead, it is possible to tell the server to run more pixeldata repetitions, each of which gets completely committed before the next. This will only occur when there is a substantial backlog of pixels to process.
(Ignored by pixelDataEventLogQueue; uses threads instead)
Default: 1
How many pixel pyramids will be generated at a single time. The value should typically not be set to higher than the number of cores on the server machine.
Default: 2
Default: 256
Default sizes for tiles are provided by a ome.io.nio.TileSizes implementation. By default the bean (“configuredTileSizes”) uses the properties provided here.
Default: configuredTileSizes
Default: 256
Instance of the PolicyService interface which will be responsible for checking certain server actions made by a user.
Default: defaultPolicyService
Configuration for the policy of whether users can access binary files from disk. Binary access includes all attempts to download a file from the UI.
The individual components of the string include:
Though the order of the components of the property are not important, the order that they are listed above roughly corresponds to their priority. E.g. a -write value will override +plate.
Example 1: “-read,+write,+image,-plate” only owners of an image and admins can download it.
Example 2: “-read,-write,-image,-plate” no downloading is possible.
Configuration properties of the same name can be applied to individual groups as well. E.g. adding, omero.policy.binary_access=-read to a group, you can prevent group-members from downloading original files.
Configuration is pessimistic: if there is a negative either on the group or at the server-level, the restriction will be applied. A missing value at the server restricts the setting but allows the server to override.
Default: +read, +write, +image
The prefix to apply to all port numbers (SSL, TCP, registry) used by the server
Default: [empty]
Executable on the PATH which will be used for scripts with the mimetype ‘text/x-jython’.
Default: jython
Executable on the PATH which will be used for scripts with the mimetype ‘text/x-matlab’.
Default: matlab
Executable on the PATH which will be used for scripts with the mimetype ‘text/x-python’.
No value implies use sys.executable
Default: [empty]
Server implementation which will be used for scripts with the mimetype ‘text/x-jython’. Changing this value requires that the appropriate class has been installed on the server.
Default: omero.processor.ProcessI
Server implementation which will be used for scripts with the mimetype ‘text/x-matlab’. Changing this value requires that the appropriate class has been installed on the server.
Default: omero.processor.MATLABProcessI
Server implementation which will be used for scripts with the mimetype ‘text/x-python’. Changing this value requires that the appropriate class has been installed on the server.
Default: omero.processor.ProcessI
Frequency to reload script params. By default, once a day at midnight.
Cron Format: seconds minutes hours day-of-month month day-of-week year (optional). For example, “0,30 * * * * ?” is equivalent to running every 30 seconds. For more information download the latest 1.x version of the Quartz Job Scheduler and review docs/api/org/quartz/CronExpression.html within the distribution.
Default: 0 0 0 * * ?
Guava LoadingCache spec for configuring how many script JobParams will be kept in memory for how long.
For more information, see http://google.github.io/guava/releases/17.0/api/docs/com/google/common/cache/CacheBuilderSpec.html
Default: maximumSize=1000
Default: 3600000
Analyzer used both index and to parse queries
Default: ome.services.fulltext.FullTextAnalyzer
Size of the batches to process events per indexing. Larger batches can speed up indexing, but at the cost of memory.
Default: 5000
Extra bridge classes, comma-separated, to be invoked on each indexing. Bridges are used to parse more information out of the data.
Default: [empty]
Polling frequency of the indexing. Set empty to disable search indexing.
Cron Format: seconds minutes hours day-of-month month day-of-week year (optional). For example, “0,30 * * * * ?” is equivalent to running every 30 seconds. For more information download the latest 1.x version of the Quartz Job Scheduler and review docs/api/org/quartz/CronExpression.html within the distribution.
Default: */2 * * * * ?
Default: eventLogQueue
Indexing takes place on all EventLogs as they occur in the database. The types listed here will be skipped if they appear in the “entityType” field of the EventLog table.
Default: ome.model.annotations.ChannelAnnotationLink, ome.model.core.Channel, ome.model.core.PlaneInfo, ome.model.core.PixelsOriginalFileMap, ome.model.containers.DatasetImageLink, ome.model.containers.ProjectDatasetLink, ome.model.containers.CategoryGroupCategoryLink, ome.model.containers.CategoryImageLink, ome.model.display.ChannelBinding, ome.model.display.QuantumDef, ome.model.display.Thumbnail, ome.model.meta.Share, ome.model.meta.Event, ome.model.meta.EventLog, ome.model.meta.GroupExperimenterMap, ome.model.meta.Node, ome.model.meta.Session, ome.model.annotations.RoiAnnotationLink, ome.model.roi.Roi, ome.model.roi.Shape, ome.model.roi.Text, ome.model.roi.Rectangle, ome.model.roi.Mask, ome.model.roi.Ellipse, ome.model.roi.Point, ome.model.roi.Path, ome.model.roi.Polygon, ome.model.roi.Polyline, ome.model.roi.Line, ome.model.screen.ScreenAcquisitionWellSampleLink, ome.model.screen.ScreenPlateLink, ome.model.screen.WellReagentLink, ome.model.stats.StatsInfo
EventLog.action values which will be indexed. Unless custom code is generating other action types, this property should not need to be modified.
Default: INSERT, UPDATE, REINDEX, DELETE
Whitelist of object types which will be indexed. All other types will be ignored. This matches the currently available UI options but may need to be expanded for custom search bridges.
Default: ome.model.core.Image, ome.model.containers.Project, ome.model.containers.Dataset, ome.model.screen.Plate, ome.model.screen.Screen, ome.model.screen.PlateAcquisition
Default: native
Maximum file size for text indexing (bytes) If a file larger than this is attached, e.g. to an image, the indexer will simply ignore the contents of the file when creating the search index. This should not be set to more than half of the Indexer heap space.
Note
If you set the max file size to greater than 1/2 the size of the indexer’s heap (256 MB by default), you may encounter Out of Memory errors in the Indexer process or you may cause the search index to become corrupt. Be sure that you also increase the heap size accordingly (see OutOfMemoryError / PermGen space errors in OMERO.server logs).
Default: 131072000
Number of objects to load in a single indexing window. The larger this value the fewer times a single object will be indexed unnecessarily. Each object uses roughly 100 bytes of memory.
Default: 1000000
Maximum number of OR-clauses to which a single search can expand
Default: 4096
Default: 25
Default: 64
Instead, it is possible to tell the server to run more indexing repetitions, each of which gets completely committed before the next. This will only occur when there is a substantial backlog of searches to perform. (More than 1 hours worth)
Default: 1
Periodically the completion percentage will be printed. The calculation can be expensive and so is not done frequently.
Default: 100
Default: groupChmodStrategy
Default: (int8and(permissions, %s) = %s)
A keystore is a database of private keys and their associated X.509 certificate chains authenticating the corresponding public keys. A keystore is mostly needed if you are doing client-side certificates for authentication against your LDAP server.
Default: [empty]
Default: 1
Default: 3000
Implementation of PasswordProvider that will be used to authenticate users. Typically, a chained password provider will be used so that if one form of authentication (e.g. LDAP) does not work, other attempts will be made.
Default: chainedPasswordProvider
Controls whether the server will allow creation of user accounts with an empty password. If set to true (default, strict mode), empty passwords are disallowed. This still allows the guest user to interact with the server.
Default: true
A truststore is a database of trusted entities and their associated X.509 certificate chains authenticating the corresponding public keys. The truststore contains the Certificate Authority (CA) certificates and the certificate(s) of the other party to which this entity intends to send encrypted (confidential) data. This file must contain the public key certificates of the CA and the client’s public key certificate.
Default: [empty]
A list of people who get code error notifications whenever the application identifies a broken link or raises an unhandled exception that results in an internal server error. This gives the administrators immediate notification of any errors, see OMERO.mail. Example:'[["Full Name", "email address"]]'.
Default: []
OMERO.web is configured to run in Gunicorn as a generic WSGI application by default. If you are using Apache change this to “wsgi” before generating your web server configuration. Available options: “wsgi-tcp” (Gunicorn), “wsgi” (Apache)
Default: wsgi-tcp
The maximum number of requests a worker will process before restarting.
Default: 0
OMERO.web offers alternative session backends to automatically delete stale data using the cache session store backend, see Django cached session documentation for more details.
Default: {“default”: {“BACKEND”: “django.core.cache.backends.dummy.DummyCache”}}
Default: {}
Define template used as an index page http://your_host/omero/.If None user is automatically redirected to the login page.For example use ‘webclient/index.html’.
Default: None
Customize webclient login page with your own logo. Logo images should ideally be 150 pixels high or less and will appear above the OMERO logo. You will need to host the image somewhere else and link to it with "http://www.openmicroscopy.org/site/logo.jpg".
Default: None
Redirect to the given location after logging in. It only supports arguments for Django reverse function. For example: '{"redirect": ["webindex"], "viewname": "load_template", "args":["userdata"], "query_string": "experimenter=-1"}'
Default: {}
Default: weblogin
Number of images displayed within a dataset or ‘orphaned’ container to prevent from loading them all at once.
Default: 200
Compressor class to be applied to CSS files. If empty or None, CSS files won’t be compressed.
Default: None
Compressor class to be applied to JavaScript files. If empty or None, JavaScript files won’t be compressed.
Default: None
The file storage engine to use when collecting static files with the collectstatic management command. See the documentation for more details.
Default: pipeline.storage.PipelineStorage
Used as the value of the SCRIPT_NAME environment variable in any HTTP request.
Default: None
Default: false
Default: omero.web.public.cache.key
Default: 86400
Enable and disable the OMERO.web public user functionality.
Default: false
Set a URL filter for which the OMERO.web public user is allowed to navigate. The idea is that you can create the public pages yourself (see OMERO.web framework since we do not provide public pages.
Default: ^/(?!webadmin)
A boolean that sets SECRET_KEY for a particular Django installation.
Default: None
A tuple representing a HTTP header/value combination that signifies a request is secure. Example '["HTTP_X_FORWARDED_PROTO_OMERO_WEB", "https"]'. For more details see secure proxy ssl header.
Default: []
A list of servers the Web client can connect to.
Default: [[“localhost”, 4064, “omero”]]
Controls where Django stores session data. See Configuring the session engine for more details.
Default: omeroweb.filesessionstore
A boolean that determines whether to expire the session when the user closes their browser. See Django Browser-length sessions vs. persistent sessions documentation for more details.
Default: true
The absolute path to the directory where collectstatic will collect static files for deployment. If the staticfiles contrib app is enabled (default) the collectstatic management command will collect static files into this directory.
Default: /home/omero/OMERO.server/lib/python/omeroweb/static
URL to use when referring to static files. Example: '/static/' or 'http://static.example.com/'. Used as the base path for asset definitions (the Media class) and the staticfiles app. It must end in a slash if set to a non-empty value.
Default: /static/
Defines the additional locations the staticfiles app will traverse if the FileSystemFinder finder is enabled, e.g. if you use the collectstatic or findstatic management command or use the static file serving view.
Default: []
List of locations of the template source files, in search order. Note that these paths should use Unix-style forward slashes, even on Windows.
Default: []
Add plugins to the center panels. Plugins are ['Channel overlay', 'webtest/webclient_plugins/center_plugin.overlay.js.html', 'channel_overlay_panel']. The javascript loads data into $('#div_id').
Default: []
Add plugins to the right-hand panel. Plugins are ['Label', 'include.js', 'div_id']. The javascript loads data into $('#div_id').
Default: [[“Acquisition”, “webclient/data/includes/right_plugin.acquisition.js.html”, “metadata_tab”],[“Preview”, “webclient/data/includes/right_plugin.preview.js.html”, “preview_tab”]]
Add links to the top header: links are ['Link Text', 'link', options], where the url is reverse(‘link’) OR simply ‘link’ (for external urls). E.g. '[["Webtest", "webtest_index"], ["Homepage", "http://...", {"title": "Homepage", "target": "new"} ]]'
Default: [[“Data”, “webindex”, {“title”: “Browse Data via Projects, Tags etc”}],[“History”, “history”, {“title”: “History”}],[“Help”, “http://help.openmicroscopy.org/”,{“title”:”Open OMERO user guide in a new tab”, “target”:”new”}]]
Specifies whether to use the X-Forwarded-Host header in preference to the Host header. This should only be enabled if a proxy which sets this header is in use.
Default: false
Django view which handles display of, or redirection to, the desired full image viewer.
Default: omeroweb.webclient.views.image_viewer
Default: None
A string representing Gunicorn additional arguments. Check Gunicorn Documentation http://docs.gunicorn.org/en/latest/settings.html
Default: None
Workers silent for more than this many seconds are killed and restarted. Check Gunicorn Documentation http://docs.gunicorn.org/en/stable/settings.html#timeout
Default: 60
The number of worker processes for handling requests. Check Gunicorn Documentation http://docs.gunicorn.org/en/stable/settings.html#workers
Default: 5