Sfederowany problem

Mamy trzy główne topologie czy też modele działania usług w sieci: scentralizowany, sfederowany[1] i rozproszony. Każdy z nich ma swoje wady, zalety i… problemy. W tym wpisie będzie o tym, czemu federacja nie zawsze jest dobrym pomysłem, jaki problem wprowadził z powodu wyboru sfederowanego modelu Mastodon. I co można z tym zrobić.

Wstęp

Na początek dla przypomnienia – albo dla kontekstu – Mastodon to serwer social media, w założeniu mający być – mniej więcej – alternatywą dla Twittera. Działaja w oparciu o protokół ActivityPub. Zamiast jednego, centralnego serwera, działającego pod jedną domeną[2] istnieje wiele serwerów. Każdy z nich ma swoją odrębną domenę, swojego administratora, swoją moderację i swoich użytkowników. A pod spodem – swoją własną bazę danych. Jednak przy tych wszystkich odrębnościach, w przeciwieństwie do sieci scentralizwoanych, serwery wymieniają się między sobą danymi, jeśli zachodzi taka potrzeba. Czyli na Bluesky nie polubimy tweeta, natomiast w przypadku wpisu na Mastodonie (toot) nie ma przeszkód by użytkownik jednego serwera polubił wpis z innego[3].

Typowym przykładem sieci zdecentralizowanej podawanym jako przykład są serwery popularnej usługi, jaką jest poczta elektroniczna (email). Niezależnie, czy „skrzynkę”[4] mamy na Gmail, Outlook, Onecie, Protonie czy własnym serwerze, możemy wysłać mail i za – pośrednictwem protokołu SMTP – dotrze on na serwer odbiorcy.

Osobiście uważam, że lepszym, bliższym przykładem usługi sfederowanej, do której można porównać Mastodona, są grupy dyskusyjne, działające w oparciu o protokół NNTP. Niestety, usługa nie jest już powszechnie używana czy znana, więc jako przykład przybliżający ideę słabo się nadaje. Jednak wydaje mi się lepsza, bo zachodziła interakcja między wieloma użytkownikami, którzy mogli swobodnie wchodzić w interakcję z treściami zamieszczonymi przez innych użytkowników. Nie było określonego przez nadawcę odbiorcy.

Technicznie działało to tak, że administrator uruchamiał serwer NNTP, ustalał z jakimi serwerami wymienia się treściami, jakie grupy, czyli treści będzie utrzymywał na swoim serwerze. I jacy użytkownicy mogą z jego serwera korzystać, czyli pobierać i zamieszczać treści. Z punktu widzenia użytkownika wyglądało to tak, że łączy się do jednego serwera, odbiera wiadomości z wybranych grup dyskusyjnych napisane przez różnych użytkowników. A jeśli coś napisze, to trafia to na wszystkie serwery, na których obsługiwana jest dana grupa.

Problem

Tyle tytułem wstępu, pora przejść do problemu. Serwer Mastodona może postawić każdy. Obecnie działa blisko 10 tys. serwerów Mastodon[5]. Gdy któryś z użytkowników zamieści toot z linkiem do strony WWW, to wszystkie serwery, na których na których znajdują się jego followers (obserwujący), generują podgląd strony. W tym celu każdy z serwerów wysyła żądanie do docelowego serwera WWW w celu pobrania strony? Gdzie problem? Ano w tym, że w przypadku kont z większą liczbą obserwujących, tych serwerów potrafi być wiele. I wysyłają te żądania w zbliżonym czasie. Z punktu widzenia ofiary, czyli serwera WWW do którego link zamieszczono to coś w rodzaju DDoS.

Temat nie jest nowy, był dokładnie opisany w 2022, z wykresami, schematem działania i ilością żądań. Gorąco polecam lekturę, szczególnie jeśli w moim opisie jest coś niejasnego. Jest tam też trochę o zasadności nazywania tego działania DDoSem. Oryginalne zgłoszenie na GitHub jest jeszcze starsze i pochodzi z roku 2017. Sam schemat „ataku” w pewnym sensie przypomina botnet, przy czym kontrolującym byłaby tu dowolna osoba zamieszczająca link w treści toota, a boty wykonują tylko jedno żądanie.

Tyle, że to wystarcza do zakłócenia działania zewnętrznych usług. O tym, że problem nie jest jedynie teoretyczny, świadczą niedawne przykłady z kraju:

Czy linki dodawane na fedi obciążają serwery www? Obciążają, bo po dodaniu linku, każdy sfederowany serwer zaciąga sobie jego podgląd.
[…]
Spotkałem się już z głosami, że to coraz poważniejszy problem, porównywalny z małym atakiem DDOS. Nie wiem na ile wpływa to na obciążenie mojej strony, ale na pewno jest zauważalne. Dlatego będę pamiętał, aby dodawać link nieco wcześniej lub później niż w innych mediach.
Źródło: https://101010.pl/@rdrozd/113668863306405283

To jest problem, który mnie dotknął (blog na WP z wtyczką ActivityPub), po przeprowadzce na mniejszy serwer.
Mimo tego, że śledzących na fedi mam raptem niecałe cztery dychy, to pierwsza publikacja nowego wpisu zamuliła mi stronę na jakieś pół godziny, może dłużej, a logi były pełne błędów 500 i 503 (w tysiącach).
Dzięki pomocy @m0bi ustaliłem co bardziej obciążające wtyczki, wywaliłem je i trochę innych, zostawiając pewnie z połowę. Do tego czyszczenie instalacji i takie tam, a i tak pomogło dopiero zwiększenie limitów serwera. Dzięki temu przydycha po publikacji „tylko” na 5-10 minut :/
Myślałem o rezygnacji z wtyczki AP, ale widzę, że musiałbym też odpuścić wrzucanie odnośników do wpisów na fedi.

To właściwie uniemożliwia funkcjonowanie w fediświecie malutkim amatorskim blogom bez wsparcia dużych platform.
Źródło: https://pol.social/@LukaszHorodecki/113685265406284436

Jeśli chodzi o mnie i ten blog, to z zupełnie innej okazji mam nieco stuningowaną konfigurację, relatywnie mało obserwujących, a serwer uruchomiony na dedykowanym VPSie. Więc jedyne co zauważam – poza wpisami w logach – to kilkusekundowa mniejsza responsywność serwera[6].

Dlaczego problem dotyczy Mastodona, a nie innych wspomnianych wcześniej sfederowanych usług? Powody są dwa. Po pierwsze, poczta elektroniczne czy grupy dyskusyjne działają wyłącznie same ze sobą, nie wchodząc w automatyczne, masowe interakcje z zewnętrznymi usługami. Po drugie, zjawisko popularny serwis linkuje do mniejszego i ten nie daje rady obsłużyć ruchu jest znane od dawna pod nazwą Slashdot effect. Tyle, że w tamtym przypadku ruch inicjowany był przez ludzi, a nie automatycznie. Czyli problem wynika z architektury rozwiązania i implementacji.

Rozwiązanie

Możliwych rozwiązań jest kilka. Pierwsze, najprostsze, to usunięcie interakcji z zewnętrznymi usługami w ogólności, a funkcjonalności generowania podglądu w szczególności. Tyle, że to obecnie trochę standard w social media i Mastodon wyglądałby ubogo.

Kolejne rozwiązanie to wprowadzenie jakiegoś rozwiązania typu cache, działającego w obrębie całej sieci. Czy to w stylu: serwer, którego użytkownik zamieszcza link, jego serwer generuje podgląd i rozsyła go razem z tootem. Czy też w postaci zewnętrznego, wspólnego dla wielu instancji Mastodon, serwisu służącego do generowania podglądu. Wreszcie można wyznaczyć główne serwery, które będą generować podgląd, a pozostałe będą polegać na ich danych. Tyle, że wszystkie te rozwiązania – może pierwsze najmniej – podważają niezależność działania poszczególnych serwerów.

Innym rozwiązaniem jest zmniejszenie ilości serwerów, czyli większa koncentracja użytkowników. Jednak nie zanosi się na to i trudno w praktyce na to liczyć.

Konsekwencje

Z jednej strony trudno posądzać autorów rozwiązania o celowe stworzenie takiej architektury, by powodowała problemy zewnętrznych serwisów, Z drugiej strony jeśli coś wygląda jak kaczka, chodzi jak kaczka i kwacze jak kaczka... Problem jest znany twórcom Mastodona od blisko dekady i… jest uparcie ignorowany.

Piszę o tym, bo co jakiś czas wraca temat wykorzystywania scentralizowanych platform social media (Facebook, X/Twitter) przez instytucje publicznie. I pojawia się pomysł/propozycja wykorzystania Mastodona jako alternatywy. Według mnie, przy obecnym stanie rzeczy, jest to pomysł niepoważny. Trudno oczekiwać, by instytucje państwowe czy samorządowe wykorzystywały narzędzia, o których wiadomo, że mogą być szkodliwe dla innych usług w sieci.

Mnie osobiście ten stan rzeczy zniechęca do korzystania z platformy. Nie czuję się komfortowo z tym, że mój błahy wpis może powodować problem u jakiejś strony trzeciej. Może nie na tyle, by przestać zupełnie z niej korzystać, ale na tyle, by ograniczyć aktywność. Staram się linkować tylko do swoich stron i nie podbijać (boost) wpisów z linkami.

[1] Znany też jako zdecentralizowany.
[2] Uproszczenie, w praktyce scentralizowane serwisy mają wiele serwerów, ale dla łączącego z zewnątrz użytkownika jest to niezauważalne.
[3] Uproszczenie, serwery muszą dopuszczać federację między sobą, użytkownicy nie mogą się blokować. Jednak stan domyślny i wyjściowy jest taki, że mogą.
[4] Czyli adres email.
[5] Źródło, Marzec 2026, tylko serwery działające w oparciu o oprogramowanie Mastodon. W praktyce jest więcej kompatybilnego oprogramowania o podobnym schemacie działania.
[6] Dla pamięci: load average 9,95, 3,51, 1,25 w po kilkudziesięciu sekundach od zamieszczenia wpisu. Typowo jest ok. 1 wszędzie.

Rok przestępny

Dawno nie włączałem radia. RNŚ w tym wypadku. I właśnie wczoraj rano w radio RNŚ posłuchałem audycji. Trafiłem nieco w środek wątku o tym, czy bieżący rok jest przestępny, czy nie jest. No i słyszę z ust prowadzącego, że rok nie jest przestępny, bo dwadzieścia sześć nie dzieli się przez cztery. Ale gdyby się dzieliło, to by był przestępny. WTF?

Przyznaję, że nie pamiętałem od ręki wszystkich warunków z głowy[1], ale wiedziałem, że jest ich więcej, niż tylko podzielność przez cztery. Czyli, że trzeba brać cały rok, nie ostatnie 2 cyfry. I wiedziałem, że rok 2000 był przestępny, choć zachodził warunek dodatkowy, dzięki któremu nie byłby przestępny, bo zachodził kolejny warunek dodatkowy. I tu nawet mi poprawnie świtało, że trzecim warunkiem jest podzielność przez 400.

Wiem, że to może być przypadłość nerdów, ale IMO takie rzeczy to wypada wiedzieć. W szkole tego uczyli. Ew. można szybko sprawdzić w sieci, jeśli się czegoś nie pamięta dokładnie, a zabiera głos publicznie. Inaczej całe to prowadzenie to takie gadanie, aby gadać. Ani to mądre, ani ciekawe, ani nawet zabawne. Wolę, gdy prowadzący mówi o muzyce, albo nawet gdy niewiele mówi, poza zapowiedziami. Może właśnie dlatego WSQK mi tak przypasowało?

Cała sytuacja przypomina mi tę opisaną we wpisie o prowadzeniu audycji przez W. Cejrowskiego. I pozostawiła niesmak.

Zasadę, który rok jest przestępny, dokładnie i ładnie tłumaczy Wikipedia.

Ja pamiętam następująco: rok jest przestępny, jeśli dzieli się 4. Chyba, że dzieli się przez 100, to nie jest przestępny. Chyba, że dzieli się także przez 400, to jednak jest przestępny.

[1] Może bym sobie przypomniał lub wykombinował, ale nie podjąłem tego wysiłku i po prostu sprawdziłem.

Cena dostawy

Mam takie słuchawki przewodowe Sony. Nauszne, składane. Prawdopodobnie MDR-ZX110. Kupione wieki temu, na pewno mają ładnych kilka lat. Używam ich czasem przy komputerze, częściej do filmów oglądanych na telefonie i do grania na basie. Były niedrogie[1], wyglądały porządnie. Z perspektywy: zdecydowanie się sprawdziły i były warte wydanych pieniędzy.

Jak to zwykle bywa, w słuchawkach tego typu pierwsze niszczą się nauszniki, czyli pady. Najpierw obłaziły, co zniosłem. Zresztą materiałowe są nawet przyjemniejsze[2]. No ale i nie wyglądało to za pięknie, i w końcu trochę zaczynała wychodzić gąbka. Znaczy przydało by się coś zrobić.

Raczej nie lubię wymieniać sprawnych, działających sprzętów, więc pierwsze, co przyszło mi do głowy, to sprawdzenie, czy można wymienić pady. Co prawda słuchawki jakoś luźniej trzymają się na głowie, więc trochę miałem obawę, czy jest sens inwestować w nie, ale ostatecznie postanowiłem zaryzykować z wymianą.

Ile kosztują pady? To zależy. Są i takie za 2 zł, i takie za 25 zł. Stanęło na takich za 14,40 zł, bo jakości tańszych trochę się obawiałem. Szczególnie, że dostawa to i tak ponad 10 zł. Dokładnie 10,95 zł. Kupiłem, wymieniłem. Słuchawki wyglądają elegancko i nawet dobrze się teraz trzymają na głowie.

Znaczy pełen sukces? Niekoniecznie. Bo patrząc na paragon uświadomiłem sobie, że ta zabawa to łącznie ponad 25 zł. Czyli ponad 50% ceny nowych słuchawek. Z dostawą, bo mając Allegro Smart i kupując nowe słuchawki nie płaciłbym za dostawę. Więc choć ekologicznie pewnie warto naprawić/odświeżyć to ekonomicznie niezupełnie się opłaca.

Być może są sklepy stacjonarne, w których można kupić tanie pady? Nie wiem, nie znam, nie szukałem. Może błąd? Bo pewnie obejrzałbym i kupił tańsze. Można też kupić na Aliexpress, niby poniżej 10 zł z dostawą. Jednak po ostatnich doświadczeniach z kupnem pendrive’a, jakoś przestałem tam zaglądać zupełnie.

W każdym razie: cały nasz system sprzyja temu, żeby wymieniać na nowe nawet sprawne sprzęty, które wytrzymują po kilka(naście) lat. Za to dowiedziałem się, że pady do słuchawek są niemal uniwersalne, tj. pasują do wielu modeli. Najważniejsza jest zgodność średnicy.

[1] Obecna cena to 49,99 zł. Możliwe, że było podobnie, tak przynajmniej kojarzę.
[2] Tak, całkiem zeszło. Tzn. potem już oskubywałem.