diff --git a/config.yaml b/config.yaml index a82151c..e223f8a 100644 --- a/config.yaml +++ b/config.yaml @@ -8,6 +8,11 @@ theme: datacoop2020 defaultContentLanguage: da enableGitInfo: true +# Todo: create translations? +taxonomies: + category: categories + tag: tags + markup: goldmark: renderer: @@ -41,6 +46,9 @@ languages: - name: "Vedtægter" url: "rights/" weight: 4 + - name: "Blog" + url: "blog/" + weight: 5 en: title: data.coop params: @@ -62,4 +70,7 @@ languages: - name: "Statutes" url: "en/rights/" weight: 4 + - name: "Blog" + url: "en/blog/" + weight: 5 diff --git a/content/blog/_index.da.md b/content/blog/_index.da.md index d2a4c0f..bffee4d 100644 --- a/content/blog/_index.da.md +++ b/content/blog/_index.da.md @@ -2,4 +2,4 @@ title: "Blog" --- -Vigtige opdateringer fra bestyrelsen mv. +Vigtige opdateringer fra bestyrelsen, admin-teamet mv. diff --git a/content/blog/_index.en.md b/content/blog/_index.en.md index 0788e11..709f6d1 100644 --- a/content/blog/_index.en.md +++ b/content/blog/_index.en.md @@ -1,3 +1,3 @@ # Blog -We currently only blog in Danish. +Important updates from admins, board etc. Note that we primarily blog in Danish. diff --git a/content/blog/defederating-meta.da.md b/content/blog/defederating-meta.da.md index d35c484..e5c26d8 100644 --- a/content/blog/defederating-meta.da.md +++ b/content/blog/defederating-meta.da.md @@ -4,6 +4,13 @@ summary: Bestyrelsen er enige om, at der samlet set er gode nok argumenter for a date: 2025-01-12 params: author: bestyrelsen +categories: +- Admins +tags: +- board +- fediverse +- moderation +- policy --- *Vedtaget af bestyrelsen 12. januar 2025* diff --git a/content/blog/nextcloud-incident.da.md b/content/blog/nextcloud-incident.da.md new file mode 100644 index 0000000..b35ba75 --- /dev/null +++ b/content/blog/nextcloud-incident.da.md @@ -0,0 +1,244 @@ +--- +title: Performance-problemer grundet bug i Nextcloud 🐞 🔍 +summary: En fejl i synkronisering af Nextcloud-servere resulterede i dårlig ydeevne på data.coops server. +date: 2025-02-22 +params: + author: Reynir (admin team) +categories: +- Admins +tags: +- devops +- nextcloud +--- + +**Den korte version:** der er tilsyneladende en bug i synkronisering mellem Nextcloud-servere samt i Nextclouds adminpanels logvisning. Medlemmer bør derfor indtil videre ikke benytte synkronisering mellem cloud.data.coop og andre Nextcloud-servere uden nærmere aftale med administratorholdet. + +I mindst en måned har data.coop haft udfordringer med CPU, hukommelse 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 scraper dyre forgejo endpoints,](https://git.data.coop/data.coop/ansible/pulls/233) +- [nginx-proxy logs blev aldrig roteret eller ryddet op i,](https://git.data.coop/data.coop/ansible/pulls/234) +- [Synapse (matrix server) database vokser sig gevaldigt stor](https://element-hq.github.io/synapse/latest/usage/administration/state_groups.html) +- og Nextcloud bruger for meget CPU-tid i cron.php. + +Problemet med Synapse 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]({{ ref "/services/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 `cron.php`. +Jeg fandt desværre ikke meget andet en generel information om systemet og en side med logs (som ikke virkede!). + +![Screenshot der viser information og tal om systemet, eks. grafer for CPU-belastning og hukommelsesforbrug.](/static/img/devops-blog/nextcloud-screenshot.png) + +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 er der ingenting galt med; men der var tilsyneladende en bug som gjorde, at når vores Nextcloud scannede medlemmets Nextcloud for filer i en bestemt mappe, så 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. + +
+Anonymiseret uddrag fra logfilen - meget lange linjer! + +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 ] + }, +``` + +
+ +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 eftertanker + +Som administratorer hviler der et stort ansvar på os. + +Vi forsøger efter bedste evne (f.eks. den tid vi har til det frivillige arbejde) at sørge for, at data.coops services fungerer på et acceptabelt niveau. + +Til det har vi nogle gange brug for at kigge i logs og undersøge systemet. Og netop dette kan nogle gange gå lidt på tværs med vores mål om privatlivsbeskyttelse og zero-knowledge 🤔 + +I denne omgang jeg lærte ved et uheld et stk. privat mappenavn og et stk. privat filnavn via logfilerne. *Heldigvis* var disse blot generiske, og jeg kunne straks efter informere medlemmet om hændelsen. Og det vil ofte være sådan, at man kun kan finde et problem i den høstak, det er opstået: I forsøget på at lokalisere problemet har jeg kigget i mine **egne** Nextcloud filer i filsystemet og derefter søgt filsystemet for den problematiske fil, og det var altså uden held. + +Men omfanget af admin-aktivitet i medlemmernes data er noget, vi skal minimere; det er også noget, vi skal diskutere løbende og aftale faste rammer or procedurer for. + +[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). diff --git a/static/static/img/devops-blog/nextcloud-screenshot.png b/static/static/img/devops-blog/nextcloud-screenshot.png new file mode 100644 index 0000000..55f2d41 Binary files /dev/null and b/static/static/img/devops-blog/nextcloud-screenshot.png differ diff --git a/themes/datacoop2020/layouts/_default/list.html b/themes/datacoop2020/layouts/_default/list.html index 541c711..54925c5 100644 --- a/themes/datacoop2020/layouts/_default/list.html +++ b/themes/datacoop2020/layouts/_default/list.html @@ -2,6 +2,8 @@

{{ .Title }}

+{{ .Content }} + {{ $pages := .Pages }} {{ range $pages.ByPublishDate.Reverse }}

diff --git a/themes/datacoop2020/layouts/partials/nav.html b/themes/datacoop2020/layouts/partials/nav.html index 5d2f0e6..6c801d1 100644 --- a/themes/datacoop2020/layouts/partials/nav.html +++ b/themes/datacoop2020/layouts/partials/nav.html @@ -4,7 +4,15 @@ {{ range .Site.Menus.nav }} {{ $atURL := absURL $currentPage.RelPermalink }} {{ $compURL := absURL .URL }} -

  • {{ .Name }}
  • +
  • {{ .Name }} + +
  • {{ end }}