Federated share (upload) speed

Description

In a voluntary work project I have set up multiple owncloud instances for different purposes with slight differences (e.g. quota, sso, backup cycles). The users log-in via sso on one instance where they have their user home and the shares where they have permissions are added to their home from federated instances. The data directory of each instance lies on a gluster share.

Everything works as expected but is quite slow. This is no surprise. As far as I understand, when a file gets uploaded, it will be put into the user’s upload folder and then moved to the destination. Unless it’s a federated share. Then after the file’s in the upload folder, it’ll be uploaded to the upload folder of the user who shared and then moved to the destination. This results in a very slow, more or less half the upload speed. This makes perfectly sense in a multi-site environment. But when the servers are in the same LAN, connected through 10Gb-links, is there any way to improve the speed?

I’ve followed all the ownCloud Server Tuning recommendations. Uploaded files with or without enabled clamav and redis.

Thanks a a lot in advance for any ideas how we could improve the performance.

Steps to reproduce

  1. set up two owncloud instances
  2. federate them
  3. share one folder to a user on the other instance
  4. upload files to the share

Expected behaviour

Upload speed to the share is slightly slower than uploading to the instance directly logged in.

Actual behaviour

It’s very much slower.

Server configuration

Operating system:
CentOS 7.6.1810

Web server:
Apache 2.4

Database:
Postgresql 11.4 on an external server.

PHP version:
7.2.10

ownCloud version: (see ownCloud admin page)
10.3.1.1

Are you using external storage, if yes which one: local/smb/sftp/…
glusterfs 3.12.14

Are you using encryption: yes/no
no

Are you using an external user-backend, if yes which one: LDAP/ActiveDirectory/Webdav/…
sociallogin 1.11.1 authentication app with keycloak on the instance where the users log in

I would recommend to install collectd. On all instances I would set up the collect daemon to collect data about all vital services and processes running on each server. There are plugins for Apache,

You can use something like Graphana or Collectd-web to graph the data provided by collectd.

Analyze the data to discover bottlenecks and try to eliminate them.

Perhaps you can post even some graphs here…

Edit: additional link https://collectd.org/wiki/index.php/Networking_introduction

I’ll try this, thank you very much!