111 lines
3.3 KiB
ReStructuredText
111 lines
3.3 KiB
ReStructuredText
.. _increase-gunicorn:
|
|
|
|
Increase Gunicorn Workers
|
|
-------------------------
|
|
|
|
.. important::
|
|
|
|
If you increase the number of :term:`Gunicorn` workers, you also need to
|
|
increase the threadpool size of the VCS Server. The recommended size is
|
|
6 times the number of Gunicorn workers. To set this, see
|
|
:ref:`vcs-server-config-file`.
|
|
|
|
|RCE| comes with `Gunicorn`_ packaged in its Nix environment. To improve
|
|
performance you can increase the number of workers. To do this, use the
|
|
following steps:
|
|
|
|
1. Open the :file:`home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file.
|
|
2. In the ``[server:main]`` section, increase the number of Gunicorn
|
|
``workers`` using the following formula :math:`(2 * Cores) + 1`.
|
|
|
|
.. code-block:: ini
|
|
|
|
[server:main]
|
|
host = 127.0.0.1
|
|
port = 10002
|
|
use = egg:gunicorn#main
|
|
workers = 1
|
|
threads = 1
|
|
proc_name = RhodeCodeEnterprise
|
|
worker_class = sync
|
|
max_requests = 1000
|
|
timeout = 3600
|
|
|
|
3. In the ``[app:main]`` section, set the ``instance_id`` property to ``*``.
|
|
|
|
.. code-block:: ini
|
|
|
|
# In the [app:main] section
|
|
[app:main]
|
|
# You must set `instance_id = *`
|
|
instance_id = *
|
|
|
|
4. Save your changes.
|
|
5. Restart your |RCE| instance, using the following command:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ rccontrol restart enterprise-1
|
|
|
|
If you scale across different machines, each |RCM| instance
|
|
needs to store its data on a shared disk, preferably together with your
|
|
|repos|. This data directory contains template caches, a whoosh index,
|
|
and is used for task locking to ensure safety across multiple instances.
|
|
To do this, set the following properties in the :file:`rhodecode.ini` file to
|
|
set the shared location across all |RCM| instances.
|
|
|
|
.. code-block:: ini
|
|
|
|
cache_dir = /file/path # set to shared location
|
|
search.location = /file/path # set to shared location
|
|
|
|
####################################
|
|
### BEAKER CACHE ####
|
|
####################################
|
|
beaker.cache.data_dir = /file/path # set to shared location
|
|
beaker.cache.lock_dir = /file/path # set to shared location
|
|
|
|
|
|
|
|
Gunicorn SSL support
|
|
--------------------
|
|
|
|
|
|
:term:`Gunicorn` wsgi server allows users to use HTTPS connection directly
|
|
without a need to use HTTP server like Nginx or Apache. To Configure
|
|
SSL support directly with :term:`Gunicorn` you need to simply add the key
|
|
and certificate paths to your configuration file.
|
|
|
|
1. Open the :file:`home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file.
|
|
2. In the ``[server:main]`` section, add two new variables
|
|
called `certfile` and `keyfile`.
|
|
|
|
.. code-block:: ini
|
|
|
|
[server:main]
|
|
host = 127.0.0.1
|
|
port = 10002
|
|
use = egg:gunicorn#main
|
|
workers = 1
|
|
threads = 1
|
|
proc_name = RhodeCodeEnterprise
|
|
worker_class = sync
|
|
max_requests = 1000
|
|
timeout = 3600
|
|
# adding ssl support
|
|
certfile = /home/ssl/my_server_com.pem
|
|
keyfile = /home/ssl/my_server_com.key
|
|
|
|
4. Save your changes.
|
|
5. Restart your |RCE| instance, using the following command:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ rccontrol restart enterprise-1
|
|
|
|
After this is enabled you can *only* access your instances via https://
|
|
protocol. Check out more docs here `Gunicorn SSL Docs`_
|
|
|
|
|
|
.. _Gunicorn: http://gunicorn.org/
|
|
.. _Gunicorn SSL Docs: http://docs.gunicorn.org/en/stable/settings.html#ssl
|