diff --git a/admin_manual/configuration_server/server_tuning.rst b/admin_manual/configuration_server/server_tuning.rst index b5223d31c..47104e7fe 100644 --- a/admin_manual/configuration_server/server_tuning.rst +++ b/admin_manual/configuration_server/server_tuning.rst @@ -8,6 +8,18 @@ Using cron to perform background jobs See :doc:`background_jobs_configuration` for a description and the benefits. +Reducing system load +-------------------- + +High system load will slow down Nextcloud and might also lead to other unwanted +side effects. To reduce load you should first identify the source of the problem. +Tools such as htop, iotop or `glances `_ +will help to identify the process or the drive that slows down your system. First +you should make sure that you installed/assigned enough RAM. Swap usage should be +prevented by all means. If you run your database inside a VM, you should not +store it inside a VM image file. Better put it on a dedicated block device to +reduce latency due to multiple abstraction layers. + .. _caching: Caching @@ -29,6 +41,20 @@ configure Nextcloud for MySQL or MariaDB. If your installation is already runnin SQLite then it is possible to convert to MySQL or MariaDB using the steps provided in :doc:`../configuration_database/db_conversion`. +In smaller installations you might not want to set up a separate cache. However +you can still tune your database. The following example is suited for a database +smaller than 1GB. MySQL will consume up to 1GB of RAM for caching. Please make +sure that your system has sufficient free RAM after the change, so that it does +not start to use your swap partition, when it receives a burst of requests. In +the given example your ``/etc/mysql/conf.d/mysql.cnf`` might contain the +following lines. (beware that this is the block for mysqld not mysql) + +.. code:: ini + + [mysqld] + innodb_buffer_pool_size=1G + innodb_io_capacity=4000 + Using Redis-based transactional file locking -------------------------------------------- @@ -73,6 +99,26 @@ Enable HTTP2 for faster loading HTTP2 has `huge speed improvements `_ over HTTP with multiple request. Most `browsers already support HTTP2 over SSL (HTTPS) `_. So refer to your server manual for guides on how to use HTTP2. +Tune PHP-FPM +------------ + +If you are using a default installation of php-fpm you might have noticed +excessive load times on the web interface or even sync issues. This is due +to the fact that each simultaneous request of an element is handled by a +separate PHP-FPM process. So even on a small installation you should allow +more processes to run. For example on a machine with 4GB of RAM and 1GB of +MySQL cache following values in your ``www.conf`` file should work: + +.. code:: ini + + pm = dynamic + pm.max_children = 120 + pm.start_servers = 12 + pm.min_spare_servers = 6 + pm.max_spare_servers = 18 + +Depending on your current PHP version you should find this file e.g. under ``/etc/php/7.2/fpm/pool.d/www.conf`` + Enable PHP OPcache ------------------