Trochę o Panu Oponce i jego krewnych
Chciałem opowiedzieć trochę o Panu Oponce i o tym, co robimy, żeby się go pozbyć.
Pan Oponka, który pojawia się ostatnio częściej niż kiedyś, stanowi nasz największy problem. Nie myślcie, że zobojętnieliśmy na jego częste występowanie. Niezależnie od tego, że wszyscy pracujący nad Blipem czujemy się odpowiedzialni za serwis, jesteśmy też jego użytkownikami. I wcale nie mniej frustruje nas częste niedziałanie Blipa, wręcz przeciwnie.
Strona z błędem pokazuje się, gdy serwery Blipa są przeciążone i w ciągu określonego czasu nie są w stanie wyświetlić strony. Kiedyś nie było Pana Oponki, nasze serwery próbowały zawsze odpowiedzieć, niezależnie ile by to miało potrwać. Niestety, kończyło się to tak, że zapychały się coraz bardziej. Lepszym rozwiązaniem jest więc przerywanie połączenia i wyświetlanie komunikatu o błędzie, powoduje to, że gdy przeciążenie znika, Blip zaczyna funkcjonować ponownie. Wiąże się z tym „przekierowanie”, przeciwko któremu protestuje wiele osób. Niestety, przyjęliśmy takie rozwiązanie, które faktycznie utrudnia naciśniecie „odśwież” i ponowną próbę wyświetlenia danej strony. Muszę przyznać, że ten uboczny efekt przekierowania nam odpowiada. Szybkie odświeżanie stron, które przeciążają serwer nie spowoduje poprawy sytuacji: wręcz przeciwnie, raczej ją znacznie pogorszy.
W tej chwili Pan Oponka pokazuje się najczęściej w godzinach największego obciążenia Blipa (ranek i późny wieczór). Sporo problemów z wejściem na kokpit mają też osoby, które blipują rzadko.
Dodatkowo występują problemy z korzystaniem z Blipa przez Gadu-Gadu (także w godzinach największego ruchu).
Dlaczego tak się działo? Blip jest systemem dość skomplikowanym, choć wydaje się prosty. Pomyślcie przykładowo, jak tworzony jest wasz kokpit? Trzeba wyszukać wasze statusy, statusy osób przez Was obserwowanych (może być ich kilkuset), statusy z tagów, które obserwujecie (też może być ich kilkaset), wiadomości pisane do Was, wiadomości pisane przez Was, jeszcze uwzględnić, że niektóre osoby są ignorowane, do tego dodać rozmaite powiadomienia… dla bazy danych też nie jest to łatwe zadania. Zwłaszcza, gdy wszystkich wiadomości jest 15 milionów. Blip jest pod tym względem bardziej złożony niż np. Twitter, nie mówiąc już o komunikatorach, które wiadomości po prostu rozsyłają, nie musząc ich pamiętać.
Przez ostatnich kilka miesięcy nasz zespół mniej lub bardziej skutecznie z Panem Oponką walczył. Były okresy, kiedy Blip działał źle, były także takie, kiedy działał całkiem dobrze. Musicie wiedzieć, że w roku 2009 liczba osób wchodzących na Blip.pl wzrosła ośmiokrotnie. Co robiliśmy? Dostawialiśmy serwery, optymalizowaliśmy zapytania do bazy danych, ograniczaliśmy te aplikacje korzystające z API Blipa, które zbytnio obciążały nasz system, oddzieliliśmy bliplogi od reszty serwisu.
Jak jednak widzicie, te działania przynosiły raczej krótkotrwały efekt. Dlatego pracowaliśmy od jakiegoś czasu nad zupełnie nową architekturą Blipa, która pozwoli przyspieszyć go nie „trochę”, ale „bardzo” i umożliwi serwisowi dalszy wzrost. Nie chcę wnikać tu w szczegóły techniczne, ale zmiany z naszego punktu widzenia są zasadnicze. Baza danych zostanie odciążona, kokpity będą budowane w pamięci serwerów i Pan Oponka powinien pojawiać się znacznie rzadziej.
Tak duża zmiana nie zostanie wdrożona z dnia na dzień. Oprogramowanie jest przygotowane (mamy w planach udostępnić jego część jako open source w ramach innego projektu), ale jego instalacja, zasilenie nowych baz danych, przetestowanie i uruchomienie całości trochę zajmie. Szacujemy, że potrwa to około 10 dni, może uda nam się odciążyć Blipa wcześniej. W czasie przełączania na nowe oprogramowanie Blipa mogą występować krótkie przerwy w jego działaniu, za które z góry przepraszamy. Operacja trochę potrwa, może nieco boleć, ale jest niezbędna.
Odrębnym problemem jest komunikacja Blipa z Gadu-Gadu. Tutaj także zaczęliśmy pracować nad usprawnieniami, pierwsze efekty powinny pojawić się za kilka dni.
Na koniec chciałem przeprosić wszystkich za tego pana, który psuje skutecznie komunikowanie się za pomocą Blipa. Mam nadzieję, że już wkrótce będziemy go widzieć znacznie, znacznie rzadziej (a przy okazji redesignu wymienimy go na coś bardziej trendy).
No tak, bot jabberowy nikogo już nie obchodzi. ;)
Barthalion — 26-01-2010 @ 17:19
Bot Jabberowy działa całkiem nieźle, korzystam z niego cały czas. Proszę pamiętać, że nie wszystkie problemy są po stronie Blipa. W przypadku problemów z Jabberem przyczyna może leżeć po stronie serwera Jabbera.
Marcin Jagodziński — 26-01-2010 @ 17:21
Lubię Pana Oponke ale ostatnio jest nieco uciążliwy, więc cieszę się, że będę go widywał rzadziej ;)
Zbirkos — 26-01-2010 @ 17:23
(mamy w planach udostępnić jego część jako open source w ramach innego projektu)
rozumiem, że chodzi o udostępnienie silnika czegoś al’a blip?
^pawelorzech — 26-01-2010 @ 17:24
^pawelorzech: nie, poslużyliśmy się systemem, który musielismy do naszych celów rozbudować i chcemy dodane przez nas funkcjonalności przekazać twórcom tego systemu. ale szczegóły wkrótce. to raczej niskopoziomowe rozwiązanie.
Marcin Jagodziński — 26-01-2010 @ 17:27
Pan Oponka jest wystarczająco obleśny. Właściwy człowiek na właściwym miejscu.
steelman — 26-01-2010 @ 17:28
Mnie szczególnie doskwierają problemy z wejściem na kokpit mojego rzadziej blipującego profilu. Tworzy się błędne koło – im rzadziej mogę wejść, tym rzadziej blipuję, a im rzadziej blipuję, tym rzadziej mogę wejść. W ten sposób profil usycha, zamiast się rozwijać :( Więc czekam z wielkim utęsknieniem na zmiany na lepsze.
kasicak — 26-01-2010 @ 17:35
@kasicak można spróbować wchodzić na inny kokpit i z niego dodawać blipnięcia. ale mam nadzieję, że niedługo nie będą potrzebne takie sztuczki.
Marcin Jagodziński — 26-01-2010 @ 17:48
a ja używam wersji mobilnej blipa (m.blip.pl) i musze powiedzieć, że o wiele bardziej mi ona pasuje. no i rzadziej (przynajmniej takie odnosze wrażenie) się sypie…
Imrahil — 26-01-2010 @ 18:32
Dobrze wiedzieć, że są prowadzone prace. Doskonale zdaję sobie sprawę ze skomplikowania i upierdliwości takiego wdrożenia, więc trzymam kciuki, aby się udało !
Ecce — 26-01-2010 @ 18:40
Dobrze, że coś się w tym temacie ruszyło. Najgorsze co może być to brak ustosunkowania się do próśb ogółu lub udawanie, że problem nie istnieje. Życzę sukcesów i jak najmniej padów. :)
PS. W przypadku wystąpienia erroru, jeżeli nie jest już możliwe zachowania w pasku adresu docelowej strony którą chcemy odwiedzić. Przydała by się chociaż informacja z linkiem, który wywołał błąd. Ułatwiło by to wszystkim życie. Nie ma nic gorszego niż otworzenie w nowej zakładce np. kokpitu jakiegoś usera, po czym dostajemy http://help.gadu-gadu.pl/errors/blip/ i musimy na nowo szukać URLu.
shadow_no — 26-01-2010 @ 18:48
Redesign także w tym tygodniu?
aepictures — 26-01-2010 @ 18:54
@aepictures: nie, znacznie później. najważniejsza jest poprawa stabilności.
Marcin Jagodziński — 26-01-2010 @ 19:11
A ja bym chętnie poczytał o technikaliach i wnętrznościach blipa (pana oponki już mniej). Wiem – zboczenie zawodowe :-)
^plugawy — 26-01-2010 @ 22:00
Popieram Shadow_no! Nawet adres w formie plain textu (nie jako hyperlink), ale żeby cokolwiek było. Jak się otwiera kilka stron na raz, to potem trudno sobie przypomnieć, który link się otworzył, a który “zepsuł”…
^drewniacki — 27-01-2010 @ 00:12
Ja Pana Oponkę widziałam ostatnio na Facebooku – przeprowadza się… :P
Banny — 27-01-2010 @ 00:30
A mnie bot jabberowy coś źle działa. Patrzę na to, co on mi wysyła, patrzę na kokpit na www i są różnice. Niektóre blipnięcia (ostatnio całkiem sporo) nie docierają do mnie jabberem, inne mam na jabberze dużo wcześniej niż na wuwu (ale raczej rzadko się zdarza, żebym nie dostał na wuwu tego, co dostałem jabberem).
arim — 27-01-2010 @ 11:12
była awaria bota jabberowego, bardzo prosimy o zgłaszanie takich błędów mailem.
jabber też będzie reinstalowany w przyszłości.
Marcin Jagodziński — 27-01-2010 @ 11:24
Jest jedne pewne rozwiązanie tego problemu, tak jak zrobiła to NK – pozyskanie pożądnego serwera/serwerowni/sponsora… tam chyba było HP…
pyt — 27-01-2010 @ 12:12
ee tam takie awarie to jest nic, mnie wczoraj google w ogóle nie działało, to jest prawdziwy dramat :(
feelek — 27-01-2010 @ 12:13
Niech będzie błąd, niech nawet będzie przekierowanie, ale BŁAGAM, wyświetlajcie zamiast tego ohydztwa coś estetyczniejszego, np. starą oponę. Widok tego czegoś w kolorze sraczkowatym, z miną debila i grzywką Hitlera jest trzy razy gorszy od niedogodności spowodowanych chwilowym niedziałaniem blipa.
saddie — 27-01-2010 @ 12:15
„Szybkie odświeżanie stron, które przeciążają serwer nie spowoduje poprawy sytuacji: wręcz przeciwnie, raczej ją znacznie pogorszy.”
To już lepiej na loadbalancerze zrobić jakiś trik, który w razie dużego obciążenia po prostu automatycznie odeśle oponkę. Blip staje się kompletnie nieużywalny, gdy poklika się niektóre linki wysłane Jabberem, a potem zobaczy 10 otwartych kart i w żadnej możliwości powtórnego wejścia na strony bez ponownego skanowania blipnięć w komunikatorze i wybierania linków.
mcv — 27-01-2010 @ 12:17
Oczywiście, że da się pogodzić i brak przekierowania (czyli normalny dokument błędu HTTP pod oryginalnym adresem) i nieobciążanie bardziej serwera. Nikt nie będzie klikał „odśwież” kilkanaście razy na sekundę i proste sprawdzenie „czy już czas, żeby próbować ponownie” na serwerze nie obciąży go istotnie. Jeszcze lepiej to zrobić, jak mcv pisze, na load balancerze, czy czy reverse proxy przyjmującym połączenia (w takiej instalacji prawie na pewno istnieje taka warstwa pośrednicząca). Wtedy ’503 Service Unavailable’ może zostać odesłane jeszcze zanim serwer się przeciąży, skutecznie redukując faktyczne obciążenie serwera i podnosząc jego efektywność.
Tu nie chodzi o to, że żądana strona nie pojawia się od razu, ale o to, że tracona jest informacja, URL który użytkownik chciał odwiedzić. A przecież utratę informacji zwykle uznaje się za najgorszą rzecz jaka może przydarzyć się systemowi informatycznemu.
Ale, żeby userzy mieli twórcom serwisu tłumaczyć jak kod pisać? No cóż… pewnie blip ma zbyt świadomych techicznie użytkowników (sporo z nas zawodowo zajmuje się tworzeniem serwisów WWW i podobnymi)… ;)
Jajcuś — 27-01-2010 @ 12:40
przekierowanie jest właśnie robione na proxy i odsyła oponkę. “Nikt nie będzie klikał „odśwież” kilkanaście razy na sekundę” wiele osób będzie tak klikało. nie ma możliwości badania na bieżąco “obciążenia” serwerów aplikacyjnych, słabym punktem jest baza. blip nie jest optymalizowany na otwieranie go w 10 kartach na raz, smutne, ale prawdziwe.
ale tak jak pisałem we wpisie, nie uważamy, żeby największym problemem było teraz fine-tuning komunikatu z błędem albo czasaniu grzywki pana oponki, skupiamy się na zmianie architektury blipa.
Marcin Jagodziński — 27-01-2010 @ 14:04
A czy nie można na proxy zapamiętać, że ostatnio był timeout i zablokować odpytywanie danego serwera (lub w ogóle wszystkiego) na chwilkę? Nie trzeba badać obciążenia, tym sposobem „samo” się określi. ;-) Czy w ogóle w nowej architekturze to będzie rozwiązane, czy zakładacie, że w przyszłości nie będzie przeciążeń?
mcv — 27-01-2010 @ 15:26
“Niestety, przyjęliśmy takie rozwiązanie, które faktycznie utrudnia naciśniecie „odśwież” i ponowną próbę wyświetlenia danej strony. Muszę przyznać, że ten uboczny efekt przekierowania nam odpowiada.”
U mnie jako użytkownika taki tekst wywołuje wściekłe drgawki. Zwłaszcza że redirecting dotyczy również (a nawet zazwyczaj) zewnętrznych linków, których docelowy adres widać w polu “title”, a które nie otwierają się, bo rdir.pl się zadławił. Ja wiem, że to na pewno celowe, kompleksowe rozwiązanie z jakimś oczywistym dla adminów sensem, ale z mojego punktu widzenia, połączone z tekstem “a nam to odpowiada”, jest zaproszeniem do pożegnania się z waszym sympatycznym skądinąd serwisem.
bart — 27-01-2010 @ 15:40
Ja jeszcze bym prosił o porządne archiwum i RT.
aper — 27-01-2010 @ 15:49
Dla wszystkich miłośników pana Oponki…
Przez ostatnie kilka dni Blip coś niedomaga wieczorami… W ramach małej prokrastynacji to coś jak mały głód postanowiłem jakość odnieść się do tego, jakże poważnego dla wielu, problemu. W efekcie powstało takie oto dzieło :
Od razu chciałbym z…
KosciaKowy blog — 27-01-2010 @ 18:05
czekam z niecierpliwością aż Pan Oponka zniknie i życzę ekipie powodzenia w usprawnianiu:)
teijka — 27-01-2010 @ 19:58
Czekam z niecierpliwością na zniknięcie Oponki i mam wielką nadzieję, że usunięcie problemu nastąpi szybciej niż na innej usłudze GG, a dokładniej na fora.pl.
deni58 — 28-01-2010 @ 19:31
Mam nadzieję, że niedługo 302 zniknie i pojawi się w jego miejsce 503 lub 504 na porządnym web proxy, które szybko (nie czekając na timeout – po timeoucie to moja przeglądarka potrafi wyświetlić odpowiedni komunikat) i sprawnie będzie wycinać ruch w przypadku przeciążenia. Na razie timeout i redirect wygląda jak z projektu na zaliczenie na wczoraj. :/
Makdaam — 5-02-2010 @ 23:50