229 lines
46 KiB
Markdown
229 lines
46 KiB
Markdown
---
|
|
title: Performance problemer grundet bug i Nextcloud
|
|
summary: En fejl i synkronisering af Nextcloud servere resulterede i dårlig performance af data.coops server.
|
|
date: 2025-02-22
|
|
params:
|
|
author: Reynir (admin team)
|
|
---
|
|
|
|
**Den korte version:** der er tilsyneladende en bug i synkronisering mellem Nextcloud-servere samt i log vieweren i admin-panelet. Medlemmer bør derfor indtil videre ikke sætte synkronisering op mellem cloud.data.coop og andre Nextcloud servere uden nærmere aftale med administratorholdet.
|
|
|
|
I mindst en måned har data.coop haft udfordringer på performance og disk plads.
|
|
Det har vi i [admin-teamet](/rights/#-7-administratorer) haft kig på når vi har kunne finde tid.
|
|
Vi fandt nogle årsager:
|
|
|
|
- [Mastodon remote profilbilleder, der aldrig bliver ryddet op i](https://git.data.coop/data.coop/ansible/pulls/228)
|
|
- [bots der scraper dyre forgejo endpoints,](https://git.data.coop/data.coop/ansible/pulls/233)
|
|
- [nginx-proxy logs der aldrig bliver roteret eller ryddet op i,](https://git.data.coop/data.coop/ansible/pulls/234)
|
|
- [Synapse (matrix server) database der vokser sig gevaldigt stor,](https://element-hq.github.io/synapse/latest/usage/administration/state_groups.html)
|
|
- og Nextcloud bruger meget CPU tid i cron.php.
|
|
|
|
Problemet med Synapse har er endnu uløst. Der findes et værktøj til at komprimere den problematiske tabel, men vi har endnu ikke undersøgt om det virker for os.
|
|
Vi står over for at migrere vores services over til vores anden server, der har langt større diskkapacitet.
|
|
|
|
Denne artikel kommer dog til at handle om problemet i Nextcloud:
|
|
hvordan vi identificerede det og hvad vi gjorde for at løse det.
|
|
|
|
## Nextcloud
|
|
|
|
På [cloud.data.coop](https://cloud.data.coop/) kører vi en filsynkroniserings- og delingssoftware Nextcloud til vores medlemmer.
|
|
Det er et stykke software der kan utroligt meget[^for-meget] udover at gemme og synkronisere filer.
|
|
Det er en service vi har kørt længe.
|
|
Indtil for nylig har det kørt relativt godt.
|
|
Men så begyndte vi at se en process `php -f /var/www/nextcloud/cron.php` bruge meget CPU-tid.
|
|
Navnet `cron.php` leder tankerne hen på UNIX-programmet `cron` som er et program til at planlægge og køre programmer på faste tidspunkter.
|
|
Det bliver typisk brugt til eks. at køre oprydningsjobs om natten.
|
|
Ved at køre `lsof -p $pid_for_cron.php` kunne jeg få indsigt i hvilke filer processen har åben.
|
|
Der bed jeg mærke i `nextcloud.log`.
|
|
|
|
Da jeg begyndte at undersøge det nærmere kiggede jeg i admin-interfacet i Nextcloud.
|
|
Det er ikke et stykke software jeg personligt har meget erfaring med at køre, så jeg måtte kigge rundt og opdage hvad der var muligt at lære om hvad `cron.php` har gang i.
|
|
Jeg fandt desværre ikke meget andet en generel information om systemet og en side med logs som ikke virkede.
|
|
|
|

|
|
|
|
Log-siden gav en fejlbesked.
|
|
Noget i retning af at det gik for langsomt at få fat i logs.
|
|
Det fik mig til at lede efter logfilerne via ssh.
|
|
Logfilerne viste sig at være flere GB store, og programmer som `less` havde svært ved at håndtere at læse og vise de store filer.
|
|
Nextcloud skriver [json][json]-objekter i sine logs, og det viste sig at flere af linjerne var over 100 MB store.
|
|
Altimens oplevede jeg at serveren blev langsommere og langsommere, og der kom flere og flere apache processer fra Nextcloud-containeren som brugte 100% CPU-tid (dvs. en hel CPU-kerne).
|
|
Det blev nødvendigt at lukke Nextcloud ned, så vores andre services kunne køre videre.
|
|
Jeg åbnede et maintenance window i [status.data.coop](https://status.data.coop/) og meldte ud på vores Matrix-kanal.
|
|
|
|
Ved hjælp af [`jq`][jq] kunne jeg få *pretty printet* logfilen så linjerne ikke blev så lange, og `less` kunne følge med.
|
|
Det viste sig at `cron.php` kørte synkronisering mod et medlems egen Nextcloud-server.
|
|
Det i sig selv er fint, men der var tilsyneladende en bug som gjorde at når vores Nextcloud skannede medlemets Nextcloud for filer i en bestemt mappe blev der sat en ekstra skråstreg på og scannet rekursivt igen.
|
|
Sådan blev det ved indtil der var næsten 9000 skråstreger(!!), hvor programmet så kunne finde en videofil (lad os kalde den `foo.mkv`).
|
|
Så var programmet glad, og prøvede at tilføje metadata om filen til databasen.
|
|
Her blev databasen så utilfreds!
|
|
For i tabellen må filnavne højest være 4000 tegn langt!
|
|
Det resulterede i en fejl (exception) som blev logget inklusive de næsten 9000 rekursive kald inklusive argumenter!
|
|
Det var altså årsagen til den problematiske logfil.
|
|
|
|
<details>
|
|
<summary>Anonymiseret uddrag fra logfilen - meget lange linjer!</summary>
|
|
|
|
Det skaber selvfølgelig problemer at vise så lange linjer i en web browser, så det er desværre ikke så læseligt. Beklager!
|
|
|
|
```javascript
|
|
{
|
|
"file": "/var/www/html/3rdparty/doctrine/dbal/src/Connection.php",
|
|
"line": 1208,
|
|
"function": "convertExceptionDuringQuery",
|
|
"class": "Doctrine\\DBAL\\Connection",
|
|
"type": "->",
|
|
"args": [
|
|
{ "__class__": "Doctrine\\DBAL\\Driver\\PDO\\Exception" },
|
|
"INSERT INTO \"oc_filecache\" (\"name\", \"mtime\", \"storage_mtime\", \"size\", \"permissions\", \"etag\", \"mimepart\", \"mimetype\", \"parent\", \"checksum\", \"path_hash\", \"path\", \"storage\") VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
|
|
[
|
|
"foo.mkv", 1565527058, 1565527058, 239054537, 27,
|
|
"01234567890123456789012345678901", 15, 73, 242654, "",
|
|
"09876543210987654321098765432109",
|
|
"Min Mappe//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////foo.mkv",
|
|
41
|
|
],
|
|
[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ]
|
|
]
|
|
},
|
|
{
|
|
"file": "/var/www/html/lib/private/DB/Connection.php",
|
|
"line": 307,
|
|
"function": "executeStatement",
|
|
"class": "Doctrine\\DBAL\\Connection",
|
|
"type": "->",
|
|
"args": [
|
|
"INSERT INTO \"oc_filecache\" (\"name\", \"mtime\", \"storage_mtime\", \"size\", \"permissions\", \"etag\", \"mimepart\", \"mimetype\", \"parent\", \"checksum\", \"path_hash\", \"path\", \"storage\") VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
|
|
[
|
|
"foo.mkv", 1565527058, 1565527058, 239054537, 27,
|
|
"01234567890123456789012345678901", 15, 73, 242654, "",
|
|
"09876543210987654321098765432109",
|
|
"Min Mappe//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////foo.mkv",
|
|
41
|
|
],
|
|
[ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ]
|
|
]
|
|
},
|
|
{
|
|
"file": "/var/www/html/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php",
|
|
"line": 386,
|
|
"function": "executeStatement",
|
|
"class": "OC\\DB\\Connection",
|
|
"type": "->",
|
|
"args": [
|
|
"INSERT INTO \"oc_filecache\" (\"name\", \"mtime\", \"storage_mtime\", \"size\", \"permissions\", \"etag\", \"mimepart\", \"mimetype\", \"parent\", \"checksum\", \"path_hash\", \"path\", \"storage\") VALUES(:dcValue1, :dcValue2, :dcValue3, :dcValue4, :dcValue5, :dcValue6, :dcValue7, :dcValue8, :dcValue9, :dcValue10, :dcValue11, :dcValue12, :dcValue13)",
|
|
{
|
|
"dcValue1": "foo.mkv",
|
|
"dcValue2": 1565527058,
|
|
"dcValue3": 1565527058,
|
|
"dcValue4": 239054537,
|
|
"dcValue5": 27,
|
|
"dcValue6": "01234567890123456789012345678901",
|
|
"dcValue7": 15,
|
|
"dcValue8": 73,
|
|
"dcValue9": 242654,
|
|
"dcValue10": "",
|
|
"dcValue11": "09876543210987654321098765432109",
|
|
"dcValue12": "Min Mappe//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////foo.mkv",
|
|
"dcValue13": 41
|
|
},
|
|
{
|
|
"dcValue1": 2,
|
|
"dcValue2": 2,
|
|
"dcValue3": 2,
|
|
"dcValue4": 2,
|
|
"dcValue5": 2,
|
|
"dcValue6": 2,
|
|
"dcValue7": 2,
|
|
"dcValue8": 2,
|
|
"dcValue9": 2,
|
|
"dcValue10": 2,
|
|
"dcValue11": 2,
|
|
"dcValue12": 2,
|
|
"dcValue13": 2
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"file": "/var/www/html/lib/private/DB/QueryBuilder/QueryBuilder.php",
|
|
"line": 280,
|
|
"function": "execute",
|
|
"class": "Doctrine\\DBAL\\Query\\QueryBuilder",
|
|
"type": "->",
|
|
"args": []
|
|
},
|
|
{
|
|
"file": "/var/www/html/lib/private/Files/Cache/Cache.php",
|
|
"line": 326,
|
|
"function": "execute",
|
|
"class": "OC\\DB\\QueryBuilder\\QueryBuilder",
|
|
"type": "->",
|
|
"args": []
|
|
},
|
|
{
|
|
"file": "/var/www/html/lib/private/Files/Cache/Scanner.php",
|
|
"line": 312,
|
|
"function": "insert",
|
|
"class": "OC\\Files\\Cache\\Cache",
|
|
"type": "->",
|
|
"args": [
|
|
"Min Mappe//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////foo.mkv",
|
|
/* mange, mange flere linjer */
|
|
{
|
|
"file": "/var/www/html/lib/private/Files/Cache/Scanner.php",
|
|
"line": 458,
|
|
"function": "scanChildren",
|
|
"class": "OC\\Files\\Cache\\Scanner",
|
|
"type": "->",
|
|
"args": [ "Min Mappe//", 2, 3, 242654, false, -1, false ]
|
|
},
|
|
{
|
|
"file": "/var/www/html/lib/private/Files/Cache/Scanner.php",
|
|
"line": 458,
|
|
"function": "scanChildren",
|
|
"class": "OC\\Files\\Cache\\Scanner",
|
|
"type": "->",
|
|
"args": [ "Min Mappe/", 2, 3, 242654, false, -1, false ]
|
|
},
|
|
{
|
|
"file": "/var/www/html/lib/private/Files/Cache/Scanner.php",
|
|
"line": 359,
|
|
"function": "scanChildren",
|
|
"class": "OC\\Files\\Cache\\Scanner",
|
|
"type": "->",
|
|
"args": [ "Min Mappe", 2, 3, 242654, false, -1 ]
|
|
},
|
|
```
|
|
|
|
</details>
|
|
|
|
I logfilen stod der et brugernavn på medlemmet som gjorde at vi kunne komme i kontakt med vedkommende.
|
|
Medlemmet slog så synkronisering fra på sin Nextcloud-server, og vi kunne starte vores service op dagen efter uden problemer.
|
|
|
|
### Den egentlige performance-killer
|
|
|
|
Det blev først _*rigtigt*_ et problem med performance efter jeg begyndte at undersøge hvad Nextcloud havde gange i.
|
|
Min teori er at Nextcloud forsøgte at læse den enormt store logfil og præsentere den for min browser.
|
|
Det tager selvsagt lidt tid at læse så store filer, og min browser har tænkt at det tog for lang tid.
|
|
Der hvor jeg tror det gik galt er at min browser måske forsøgte dernæst at få nextcloud til at læse logfilen igen!
|
|
Og så videre.
|
|
Resulterende i efterhånden mange processer der forsøgte at læse og forstå de gigantiske logfiler.
|
|
|
|
Ideelt set bør vi undersøge problemet nærmere, evt. prøve at reproducere og skrive en god bug report til Nextcloud.
|
|
Desværre er Nextcloud-kodebasen meget stor, med rigtig mange plugins, og det hele er skrevet i et sprog jeg ikke har erfaring med (PHP).
|
|
Derfor bliver det ikke til andet end at vi prøver at opgradere Nextcloud og håber det er et kendt problem de har løst.
|
|
|
|
## Afsluttende noter
|
|
|
|
Som administratorer hviler der et stort ansvar på os.
|
|
Vi sørger efter bedste evne, og den tid vi har til det frivillige arbejde, at sørge for at data.coops services fungerer i et acceptabelt niveau.
|
|
Til det har vi nogle gange brug for at kigge i logs og undersøge systemet.
|
|
Det kan nogle gange gå lidt på tværs med vores mål om privatlivsbeskyttelse og zero-knowledge.
|
|
|
|
I denne omgang har jeg lært et medlems mappenavn og filnavn på en af deres filer via logfilerne.
|
|
I forsøg på at lokalisere problemet har jeg kigget i mine **egne** Nextcloud filer i filsystemet og derefter søgt filsystemet for den problematiske fil (uden held).
|
|
Det er noget vi for så vidt muligt prøver at minimere.
|
|
|
|
[json]: https://www.json.org/json-en.html
|
|
|
|
[^for-meget]: Nogle vil måske endda gå så langt at sige at det kan [for meget](https://en.wikipedia.org/wiki/Unix_philosophy).
|