NC13 Cluster Performance

Good afternoon, all.

I’m at my wits end trying to track down performance issues with a new Nextcloud instance we’re aiming to use as our central cloud store for my company. I’ve been through the tuning advice, deployed caches, increased memory sizes and all to no avail.

When loading the main page (the first after login), page loads can take anywhere from three to twelve seconds.

The system consists of two web servers running PHP 7.2 and Apache, behind keepalived and haproxy. They connect, on the backend, to a three node MariaDB 10.2 Galera cluster. Files are stored on a CephFS cluster that runs on the same three nodes. All systems run Centos 7.4 and are connected with 10Gb network interconnects. There’s no appreciable load on any of the systems, as nothing’s in production yet.

PHP is configured with the Zend Opcache and the APCu cache. I’ve increased resources for the MariaDB nodes to make sure there’s plenty of space for caching and buffering. I’ve tested various reconfigurations, including moving the storage to local disk and removing the haproxy intermediaries to no avail.

Disabling all the apps did improve performance, getting me load times between 2.5 and 6.5 seconds. Enabling more apps did at

Looking at load profiles in Chrome, there appears to be some significant waiting going on, which is consistent across attempts - in this instance, we’re not even starting to render the page until five seconds in.

Another web app on the cluster (Racktables 0.20.14), also written in PHP using the same network file store and database cluster, runs with excellent performance.

I’m hoping you all can provide some insight and point me in the right direction - happy to provide additional detail, just don’t want to dump it all here up front.


Look at table <table_prefix>_bruteforce_attempts. If there are entries delete them and try again.

Unfortunately, that table is empty.

MariaDB [nextcloud]> DESCRIBE oc_bruteforce_attempts;
| Field    | Type                | Null | Key | Default | Extra          |
| id       | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| action   | varchar(64)         | NO   |     |         |                |
| occurred | int(10) unsigned    | NO   |     | 0       |                |
| ip       | varchar(255)        | NO   | MUL |         |                |
| subnet   | varchar(255)        | NO   | MUL |         |                |
| metadata | varchar(255)        | NO   |     |         |                |
6 rows in set (0.00 sec)

MariaDB [nextcloud]> SELECT * FROM oc_bruteforce_attempts;
Empty set (0.00 sec)

To follow up on my own post here…this appears to be a a Galera issue. Switching to straight MariaDB got rid of the issue. I’m now going back to see if a failover HAProxy that directs all connections to a single DB at a time can work.