nextcloud / nextcloud/server

[Bug]: Inefficient / Very slow loading and handling of file tags (systemtags)

Open
#60,013 1 comment 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. Needs triage 32-feedback bug feature: tags performance 🚀
Dominant language
PHP
Stars
36.9k
Forks
5.2k
Avg merge
2d 3h
Merged PRs (30d)
713

Description

⚠️ This issue respects the following points: ⚠️
Bug description

I manage a Nextcloud instance that uses a large number of tags (~1500). The tags are assigned to files via the browser. It takes an impractically long time—more than 5 seconds—to list the tags. When a tag is selected, it also takes more than 2 seconds for the checkmark to appear.

I noticed that the mariadb backend and the web server (nginx) deliver the data to the browser at a normal speed, but processing in the browser takes a very long time. After analyzing performance in the browser, I concluded that the display and filtering of the many filters do not scale, and that this must be the cause of the delay.

Image

... about 6s later ...
Image

I was able to reproduce this issue in Firefox and Chromium. Here is an older screenshot with annotations from Chromium's performance analysis:

Image
Steps to reproduce
  1. Create lot of tags (> 1000, maybe 1500)
  2. Select menu entry "Schlagworte verwalten"
  3. Wait a bit.
Expected behavior

The tags should load faster since the client already has the data.

Limiting the number of tags may not be a solution, as the display likely depends on the performance of the client hardware.

Nextcloud Server version

32

Operating system

Debian/Ubuntu

PHP engine version

PHP 8.3

Web server

Nginx

Database engine version

MariaDB

Is this bug present after an update or on a fresh install?

None

Are you using the Nextcloud Server Encryption module?

Encryption is Disabled

What user-backends are you using?
  • Default user-backend (database)
  • LDAP/ Active Directory
  • SSO - SAML
  • Other
Configuration report
# occ config:list system
{
    "system": {
        "logdateformat": "Y-m-d H:i:s.u",
        "loglevel": "0",
        "logtimezone": "Europe\/Berlin",
        "memcache.local": "\\OC\\Memcache\\APCu",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "password": "***REMOVED SENSITIVE VALUE***",
            "port": 6379,
            "timeout": "0.0"
        },
        "trusted_domains": [
            "***REMOVED PRIVATE VALUE***"
        ],
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "updatechecker": true,
        "updater.release.channel": "stable",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpauth": true,
        "mail_smtpauthtype": "LOGIN",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpmode": "smtp",
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "465",
        "mail_smtpsecure": "ssl",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "32.0.8.2",
        "overwrite.cli.url": "https:\/\/***REMOVED PRIVATE VALUE***",
        "overwriteprotocol": "https",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "maintenance": false,
        "default_language": "de",
        "default_locale": "de_DE",
        "default_phone_region": "DE",
        "skeletondirectory": "",
        "upgrade.disable-web": true,
        "check_for_working_wellknown_setup": false,
        "log_rotate_size": 104857600,
        "maintenance_window_start": 1,
        "preview_max_x": 1280,
        "preview_max_y": 1280,
        "app_install_overwrite": [
            "files_markdown"
        ],
        "allow_local_remote_servers": true,
        "appstoreurl": "http:\/\/***REMOVED PRIVATE VALUE***",
        "auto_logout": false,
        "session_keepalive": true,
        "session_lifetime": 86400,
        "mail_smtptimeout": "30"
    }
}
List of activated Apps
# occ app:list
Enabled:
  - activity: 5.0.0
  - app_api: 32.0.0
  - bruteforcesettings: 5.0.0
  - calendar: 6.2.2
  - circles: 32.0.0
  - cloud_federation_api: 1.16.0
  - comments: 1.22.0
  - contacts: 8.3.7
  - contactsinteraction: 1.13.1
  - dashboard: 7.12.0
  - dav: 1.34.2
  - deck: 1.16.3
  - drawio: 4.1.4
  - federatedfilesharing: 1.22.0
  - federation: 1.22.0
  - files: 2.4.0
  - files_downloadlimit: 5.0.0
  - files_pdfviewer: 5.0.0
  - files_reminders: 1.5.0
  - files_sharing: 1.24.1
  - files_trashbin: 1.22.0
  - files_versions: 1.25.0
  - firstrunwizard: 5.0.0
  - forms: 5.2.6
  - groupfolders: 20.1.12
  - impersonate: 3.0.1
  - logreader: 5.0.0
  - lookup_server_connector: 1.20.0
  - nextcloud_announcements: 4.0.0
  - notifications: 5.0.0
  - oauth2: 1.20.0
  - password_policy: 4.0.0
  - privacy: 4.0.0
  - profile: 1.1.0
  - provisioning_api: 1.22.0
  - recommendations: 5.0.0
  - related_resources: 3.0.0
  - richdocuments: 9.0.5
  - serverinfo: 4.0.0
  - settings: 1.15.1
  - sharebymail: 1.22.0
  - side_menu: 5.3.0
  - spreed: 22.0.11
  - support: 4.0.0
  - survey_client: 4.0.0
  - systemtags: 1.22.0
  - text: 6.0.1
  - theming: 2.7.0
  - twofactor_backupcodes: 1.21.0
  - twofactor_totp: 14.0.0
  - updatenotification: 1.22.0
  - user_status: 1.12.0
  - viewer: 5.0.0
  - weather_status: 1.12.0
  - webhook_listeners: 1.3.0
  - workflowengine: 2.14.0
Disabled:
  - admin_audit: 1.22.0
  - encryption: 2.20.0
  - files_external: 1.24.1
  - files_markdown: 2.4.1 (installed 2.4.1)
  - photos: 5.0.0 (installed 2.4.0)
  - suspicious_login: 10.0.0
  - twofactor_nextcloud_notification: 6.0.0
  - user_ldap: 1.23.0
Nextcloud Signing status
No errors have been found.
Nextcloud Logs

Additional info

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the issue from the listed steps with more than 1,000 tags, then use Firefox or Chromium's performance tools to inspect tag loading, display, and filtering. Done means the manage-tags view loads and reflects tag selection without the reported multi-second delays.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.