nextcloud / nextcloud/logreader

Display Filtering is very slow and results in extreme CPU usage spikes on server

Open
#2,045 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. Needs triage bug
Dominant language
JavaScript
Stars
69
Forks
30
Avg merge
10h 28m
Merged PRs (30d)
57

Description

How to use GitHub
  • Please use the 👍 reaction to show that you are affected by the same issue.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Steps to reproduce
  1. Use Nextcloud 34.0.4
  2. Go to log reader in admin settings
  3. Set "Filter logging levels" to only display warning, error, fatal (backend log is set to the same settings by default)
  4. refresh the reader
  5. loads for more than 10 seconds

When the filtering is applied after initial load (without any filtering) the filtering happens instantly.
Before we used Nextcloud 32.0.8 - the problem did not exist there.

Expected behaviour
  • Logs typically load within one second
  • No notable CPU spike
  • Logs refresh automatically
Actual behaviour
  • Logs take upwards of 10 seconds to load
  • Extreme CPU usage (in kubernetes from 0.1 CPU to 3.0 CPU)
  • The automatic refresh does not work anymore
Server configuration

Web server: Apache

Database: PostgreSQL

PHP version: 8.4

Nextcloud version: 34.0.4

List of activated apps
  • activity: 6.0.0
  • app_api: 33.0.0
  • assistant: 3.4.3
  • bruteforcesettings: 6.0.0
  • calendar: 6.4.2
  • circles: 33.0.0
  • cloud_federation_api: 1.17.0
  • comments: 1.23.0
  • contacts: 8.5.1
  • contactsinteraction: 1.14.1
  • dav: 1.36.0
  • deck: 1.17.1
  • federatedfilesharing: 1.23.0
  • federation: 1.23.0
  • files: 2.5.0
  • files_downloadlimit: 5.1.0
  • files_pdfviewer: 6.0.0
  • files_reminders: 1.6.0
  • files_sharing: 1.25.2
  • files_trashbin: 1.23.0
  • files_versions: 1.26.0
  • firstrunwizard: 6.0.0
  • groupfolders: 21.0.7
  • integration_openai: 4.5.1
  • logreader: 6.0.0
  • lookup_server_connector: 1.21.0
  • notes: 5.0.0
  • notifications: 6.0.0
  • notify_push: 1.3.3
  • oauth2: 1.21.0
  • password_policy: 5.0.0
  • photos: 6.0.0
  • polls: 9.1.4
  • privacy: 5.0.0
  • profile: 1.2.0
  • provisioning_api: 1.23.0
  • recommendations: 6.0.0
  • related_resources: 4.0.0
  • richdocuments: 10.1.3
  • serverinfo: 5.0.0
  • settings: 1.16.0
  • sharebymail: 1.23.0
  • systemtags: 1.23.0
  • tables: 2.1.1
  • tasks: 0.17.1
  • text: 7.0.1
  • theming: 2.8.0
  • twofactor_backupcodes: 1.22.0
  • twofactor_totp: 15.0.0
  • user_oidc: 8.10.1
  • viewer: 6.0.0
  • webhook_listeners: 1.5.0
  • whiteboard: 1.5.9
  • workflowengine: 2.15.0
Nextcloud configuration

"system": {
"installed": true,
"instanceid": "REMOVED SENSITIVE VALUE",
"passwordsalt": "REMOVED SENSITIVE VALUE",
"secret": "REMOVED SENSITIVE VALUE",
"dbtype": "pgsql",
"dbhost": "REMOVED SENSITIVE VALUE",
"dbname": "REMOVED SENSITIVE VALUE",
"dbuser": "REMOVED SENSITIVE VALUE",
"dbpassword": "REMOVED SENSITIVE VALUE",
"mysql.utf8mb4": true,
"dbtableprefix": "oc_",
"version": "33.0.4.1",
"trusted_domains": [
"localhost",
"REMOVED SENSITIVE VALUE",
"REMOVED SENSITIVE VALUE"
],
"trashbin_retention_obligation": "7,14",
"htaccess.RewriteBase": "/",
"memcache.local": "\OC\Memcache\APCu",
"apps_paths": [
{
"path": "/var/www/html/apps",
"url": "/apps",
"writable": false
},
{
"path": "/var/www/html/custom_apps",
"url": "/custom_apps",
"writable": true
}
],
"lost_password_link": "disabled",
"allow_user_to_change_display_name": true,
"skeletondirectory": "",
"templatedirectory": "",
"default_language": "de",
"default_locale": "de_DE",
"default_phone_region": "DE",
"default_timezone": "Europe/Berlin",
"maintenance_window_start": 1,
"trusted_proxies": "REMOVED SENSITIVE VALUE",
"overwriteprotocol": "https",
"forwarded_for_headers": [
"HTTP_X_FORWARDED_FOR"
],
"memcache.distributed": "\OC\Memcache\Redis",
"memcache.locking": "\OC\Memcache\Redis",
"redis": {
"host": "REMOVED SENSITIVE VALUE",
"password": "REMOVED SENSITIVE VALUE",
"port": 6379
},
"mail_smtpmode": "smtp",
"mail_smtphost": "REMOVED SENSITIVE VALUE",
"mail_smtpport": "25",
"mail_smtpsecure": "",
"mail_smtpauth": true,
"mail_smtpauthtype": "false",
"mail_smtpname": "REMOVED SENSITIVE VALUE",
"mail_from_address": "REMOVED SENSITIVE VALUE",
"mail_domain": "REMOVED SENSITIVE VALUE",
"mail_smtppassword": "REMOVED SENSITIVE VALUE",
"upgrade.disable-web": true,
"maintenance": false,
"overwrite.cli.url": "REMOVED SENSITIVE VALUE",
"loglevel": "2",
"enable_previews": true,
"allow_local_remote_servers": true,
"files.chunked_upload.max_size": 0,
"appstoreurl": "REMOVED SENSITIVE VALUE",
"forbidden_filename_basenames": [
"con",
"prn",
"aux",
"nul",
"com0",
"com1",
"com2",
"com3",
"com4",
"com5",
"com6",
"com7",
"com8",
"com9",
"com\u00b9",
"com\u00b2",
"com\u00b3",
"lpt0",
"lpt1",
"lpt2",
"lpt3",
"lpt4",
"lpt5",
"lpt6",
"lpt7",
"lpt8",
"lpt9",
"lpt\u00b9",
"lpt\u00b2",
"lpt\u00b3"
],
"forbidden_filename_characters": [
"<",
">",
":",
""",
"|",
"?",
"*",
"\",
"/"
],
"forbidden_filename_extensions": [
" ",
".",
".filepart",
".part"
],
"app_install_overwrite": [],
"twofactor_enforced": "true",
"twofactor_enforced_groups": [
"2faenabled"
],
"twofactor_enforced_excluded_groups": [],
"simpleSignUpLink.shown": false,
"openmetrics_allowed_clients": [
"127.0.0.1",
"10.42.0.0/16",
"10.43.0.0/16"
]
}

Browser

Browser name: Chrome

Browser version: 148

Operating system: -

Browser log
Insert your browser log here, this could for example include:
a) The javascript console log
b) The network log
c) ...

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

Start with the log reader's display-filtering flow and reproduce the issue on Nextcloud 34.0.4 using warning, error, and fatal levels. Compare initial filtered loading with filtering after an unfiltered load, and investigate the automatic refresh path. Done means filtered logs load within about one second without a notable CPU spike and automatic refresh works again.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.