Archiv der Kategorie: MTB-News.de

Updates 49+50+51/2012

Es gab lange keine Updates hier – Zeit das zu ändern!

Vorletzte Woche waren wir in Innsbruck und das ist auch der Grund, warum zu dieser Zeit im Maschinenraum nicht viel Berichtenswertes passiert ist. Was wir in Innsbruck gemacht haben, könnt ihr in Maxis Bericht nachlesen.

Die letzten beiden Wochen habe ich dann viele kleine (nicht sichtbare) Arbeiten an Servern und Software durchgeführt. Den größten Teil der Zeit habe ich aber damit verbracht, den Videobereich etwas aufzufrischen.

MTB-News.de Videobereich

Das Layout des Videobereichs wurde grundlegend überarbeitet und dem neuen Standardstyle von MTB-News.de angepasst. Ihr werdet z. B. den Header sofort wieder erkennen. Damit einhergehend bieten wir euch jetzt eine bessere Unterstützung für mobile Geräte im Videobereich. Die Breite des Inhalts passt sich automatisch dem verfügbaren Platz auf dem Bildschirm an. Hier müssen wir zwar noch einige Dinge verbessern, aber es ist bereits jetzt – ohne Optimierungen – deutlich besser auf mobilen Geräten zu benutzen als die alte Version.

Der „Gefällt mir“-Link befindet sich jetzt prominent über dem Videoplayer, zusammen mit dem Umschalter zwischen den SD-, HD- und FullHD-Versionen des Videos.

In der Galerieansicht wird jetzt bei jedem Video eine Kurzbewertung in Form von einem bis fünf Sternen angezeigt. Diese soll auf einen Blick die Relevanz eines Videos deutlich machen – sei es durch die Abspielanzahl oder die Nutzung von Like- und Kommentarfunktion. Da es naturgemäß sehr schwer ist, mehrere solcher Parameter zu einem aussagekräftigen Wert zusammenzufassen werde ich die Berechnung nachfolgend erklären. Die aktuellen Parameter sind erstmal vorläufig und können durchaus noch angepasst werden. Vielleicht habt ihr ja auch Vorschläge für bessere Formeln – dann schreibt sie uns in den Kommentaren!

Wir betrachten zuerst die Anzahl der Views eines Videos – je öfter ein Video angeschaut wurde, desto mehr Sterne wird es bekommen. Die Abstufungen sind momentan:

  • 1000 Views = 1 Stern
  • 5000 Views = 2 Sterne
  • 10000 Views = 3 Sterne
  • 25000 Views = 4 Sterne
  • 50000 Views = 5 Sterne

Als zweiter Parameter wird die Anzahl der Kommentare ins Verhältnis zur Anzahl der Views gesetzt:

  • wenn die Anzahl der Kommentare größer als 0,05 % der Views ist, gibt das einen Stern
  • ab 0,1 % ⇒ 2 Sterne
  • ab 0,25 % ⇒ 3 Sterne
  • ab 0,5 % ⇒ 4 Sterne
  • ab 1 % ⇒ 5 Sterne

Schlussendlich bewerten wir das Verhältnis von „Gefällt mir“ zu den Views:

  • ab 0,25 % ⇒ 1 Stern
  • ab 0,5 % ⇒ 2 Sterne
  • ab 1 % ⇒ 3 Sterne
  • ab 2 % ⇒ 4 Sterne
  • ab 5 % ⇒ 5 Sterne.

Die höchste erreichte Anzahl an Sternen gibt dann die endgültige Bewertung des Videos. Zum einen werden so Videos gut bewertet, welche eine hohe Anzahl von Views haben und zum anderen auch Videos die vielleicht noch nicht 50.000 Views haben, aber eine hohe Beteiligung in den Kommentaren oder Likes. So werden auch z. B. kontrovers diskutierte Videos entsprechend hoch bewertet.

Updates 48/2012

In der letzten Woche ist unsere Planung etwas durcheinandergeraten – das was wir uns vorgenommen hatten, konnten wir nicht umsetzen, da der Serverausfall bei Serverloft (ein ehemaliger Hosting-Dienstleister von uns) am Montag eine Planänderung erforderlich machte.

So drehte sich die meiste Arbeit in dieser Woche um das Einrichten neuer Server und den Umzug von Newsbereich und Forum auf diese neuen Server.

Eine kleine Änderung abseits des Serverumzugs gab es im MTB-News.de Bikemarkt, diese betrifft aber nur Händler: Als Händler kann man sich jetzt eine Vanity-URL einrichten, statt /user/12345 kann man sein Profil jetzt unter einer selbst wählbaren URL erreichbar machen, z. B. /shop/super-bikeladen. Händler finden den Link zum Festlegen der Vanity-URL auf ihrer Profilseite. Die Vanity-URL lässt sich deutlich leichter merken als die normalen Profil-Seiten-Links und sie kann auch zu einer besseren Auffindbarkeit durch Google usw. führen.

29.11.2012: Serverumzug MTB-News.de

Heute Abend gegen 21 Uhr werden wir das Forum und den Newsbereich von MTB-News.de auf neue Server umziehen. Es ist mit einer Auszeit von ca. 2,5 Stunden zu rechnen.

Wir halten euch hier auf dem Laufenden.

20:40 Uhr: Die Vorbereitungen laufen; die DNS TTLs wurden über den Tag verteilt in Stufen herabgesetzt, aktuell stehen sie bei 15 Minuten
21:00 Uhr: Das Forum ist geschlossen, die Datenbank-Dumps laufen.
21:19 Uhr: Die Datenbank-Dumps laufen noch immer. Der größte Brocken ist die Forums-Datenbank, hier sind wir gerade bei knapp der Hälfte angekommen. Sobald der Dump geschafft ist, importieren wir die Datenbanken auf dem neuen Server. Das Importieren dauert immer länger als das Dumpen, da hierbei bestimmte Datenstrukturen aufgebaut werden müssen (Indexe).
21:35 Uhr: Der Seiten des Newsbereichs werden jetzt schon vom neuen Server gerendert, die Auslieferung übernimmt momentan noch der alte Server (als Reverse Proxy)
21:49 Uhr: Der Import der Forums-Datenbank läuft seit einigen Minuten.
22:40 Uhr: Der Import der Forums-Datenbank ist abgeschlossen und wir testen gerade ob alles funktioniert. Bisher sieht es sehr gut aus
22:57 Uhr: Der Umzug des Forums ist fast abgeschlossen, das Forum ist wieder offen.

Updates 47/2012

MTB-News.de Videos

Die Erstellung der Vorschaubilder führte in der Vergangenheit manchmal zu Problem, insbesondere bei langen und/oder hochaufgelösten Filmen. Wir haben die Funktion etwas überarbeitet, so dass es für euch nun leichter sein sollte, ein passendes Vorschaubild auszuwählen.

Die Auswahl der Vorschaubilder werden nun nicht erst bei Bedarf berechnet, sondern direkt nach dem Upload. Wenn ihr kein passendes Bild in der Auswahl findet, könnt ihr auf Knopfdruck eine neue Auswahl erstellen lassen. Das kann dann ein durchaus ein paar Minuten dauern, also nicht bitte nicht wundern ;-)

MTB-News.de Bikemarkt

Die Sortierung der Suchergebnisse kann nun auch in der Ansicht für mobile Geräte eingestellt werden.

Die Erkennung von Links in Beschreibungstexten funktioniert jetzt besser.

MTB-News.de Newsbereich

Ihr könnt jetzt Artikel leichter bei Facebook und Twitter mit euren Freunden und Followern teilen. Wir haben dazu eine Variante gebaut, die ohne das Nachladen von Inhalten von Facebook oder Twitter auskommt. Per Klick auf den Share-/Tweet-Button öffnet sich ein Fenster, in dem ihr den News-Artikel weitergeben könnt. Neben den Buttons seht ihr, wie oft der Newsartikel im jeweiligen sozialen Netzwerk schon verbreitet wurde.

26.11.2012: Server nicht erreichbar

Bei einem unserer Hoster (Serverloft) gibt es derzeit ein Problem, mehrere unserer Server sind dadurch aktuell nicht erreichbar. Man arbeitet bereits an der Lösung und wir gehen davon aus, dass MTB-News gleich wieder erreichbar sein wird.

Update 9:20 Uhr: Laut Support soll spätestens um 11:00 alles wieder online sein

12:35 Uhr: Es ist jetzt die Rede davon, dass die Server nach und nach wieder ans Netz gehen sollen – wir sehen davon aber noch nichts :-( ^mj

13:24 Uhr: Ein Ticket informiert uns: „Zur weiteren Bearbeitung leiten wir nun Ihr Anliegen an die zuständige Fachabteilung weiter, die sich schnellstmöglich darum kümmern wird. “ Klasse, die Server sind ja auch erst seit 6:30 Uhr aus

14:45 Uhr: Ihr ahnt es bereits: Immer noch keine Rückmeldung vom Hosting-Anbieter Serverloft… ^mj

16:07 Uhr: keine Antwort von Serverloft… Auch leider null Infos im Internen Newsbereich bei Serverloft – das wäre doch die ideale Stelle die Kunden zu informieren…?

19:30 Uhr: Es ist Licht am Ende des Tunnels zu sehen: Der erste Server ist wieder online. Wir prüfen jetzt die Datenbanken usw. und hoffen gegen 20:30 Uhr MEZ mit den ersten Diensten wieder online zu sein. ^mj

20:20 Uhr: Wir nehmen so langsam den Betrieb wieder auf. Nahezu alle Seiten sollten wieder erreichbar sein, wenn es auch hier und da mal etwas ruckeln kann (uns fehlt noch etwas Rechenleistung, die noch nicht wieder online ist). ^mj

21:08 Uhr: Der letzte fehlende Server ist nach fast 15 Stunden (!) wieder online. Wir prüfen ihn jetzt und werden ihn gleich wieder ins Rennen schicken. Dann sollten alle Dienste von MTB-News.de wieder wie gewohnt funktionieren. ^mj

Updates 46/2012

Hier wie immer die Änderungen der vergangenen Woche – welche den Fokus eher auf der Fehlerbeseitigung und internen Verbesserungen in den Webapplikaitonen denn auf neuen Features hatten.

MTB-News.de Winterpokal

  • Einige Schönheitsfehler wurden beseitigt.
  • Bessere Lesbarkeit der internen Team-Pinnwand.

MTB-News.de Fotoalbum

  • Kommentare sind jetzt direkt verlinkbar über die Nummer vor Benutzername und Datum.
  • Bilder in Kommentaren zerstören nicht mehr das Seitenlayout.
  • Die automatische Linkerkennung in Kommentar- und Beschreibungstexten funktioniert jetzt besser.
  • Es können jetzt bis zu 200 Bilder in einem Rutsch hochgeladen werden.
  • Die beiden Bilder „Foto des Tages“ und „Foto der Woche“ auf der Startseite werden jetzt in besserer Qualität dargestellt.
  • Alle Seiten des Fotoalbums werden nun nicht mehr vom Apache-Webserver ausgeliefert, sondern (wie die meisten Seiten bei MTB-News.de) von nginx.

MTB-News.de Bikemarkt

  • Suchergebnisse können jetzt nach „Relevanz“, „Preis“ und „Einstelldatum“ sortiert werden. Die Sortierrichtung ist ebenfalls einstellbar.

MTB-News.de allgemein

  • Es wird jetzt der Benutzername in der Navigationsleiste angezeigt (sofern du eingeloggt bist).

Post Mortem: Ausfall des Bikemarkts am Morgen des 5. November 2012

Heute morgen in der S-Bahn erreichte mich die Nachricht unseres automatischen Server- und Dienste-Monitorings, dass der Bikemarkt nicht erreichbar ist. Außerdem gab es zum gleichen Zeitpunkt Meldungen über zu hohe Serverlast beim Bikemarkt.

Ich prüfte die Meldungen und stellte fest, dass der Bikemarkt tatsächlich nicht erreichbar war. Ich loggte mich auf dem Webserver per SSH ein (mit Prompt für iOS) und schaute mir die wichtigsten Daten an. Der MySQL-Server kam mit der Bearbeitung von Anfragen aus der Webapplikation nicht hinterher, was dazu führte, dass die Webapplikation in Schockstarre verfiel und sich ebenfalls nicht mehr bewegen wollte.

Mittlerweile vom iPhone auf’s iPad gewechselt, schaute ich mir die laufenden Abfragen im MySQL-Server an (SHOW FULL PROCESSLIST) an und sah erst mal nichts. Es waren zwar eine Menge Abfragen zu sehen, die aber auf dem ersten Blick alle normal aussahen und auch keine schlimmen Locks verursachten usw.

Ich hatte einen wichtigen Termin heute morgen, so dass ich erst mal sehr schlecht gelaunt alles so ließ wie es war.

Gegen 10 Uhr war ich dann – endlich – im Büro und schaute mir die Sache genauer an. Als erste Maßnahme blockierte ich den Zugriff auf den Webserver für alle IP-Adressen außer meiner eigenen. Ziel war es den Fehler möglichst eng einzukreisen anstatt die Nadel im Heuhaufen zu suchen. Was mir dann sofort auffiel: Alle Seiten des Bikemarkts funktionierten nun wie sie sollten, mit Ausnahme der Startseite. Gut. Auf der Startseite passiert nicht viel, es sollte also leicht sein, den Fehler zu finden.

Mir fiel beim erneuten Durchsehen der MySQL-Abfragen auf, dass sich immer wieder ein Muster wiederholte:

SELECTFROMWHERE … ORDER BYLIMIT 16,7216

Der letzte Teil mit dem LIMIT verstörte mich arg, denn er sollte hier nicht auftauchen. Mir schwante Schlimmes…

Und tatsächlich: Ich hatte die Mutter aller Anfängerfehler gemacht. 2012. Nach über 20 Jahren Erfahrung in der Softwareentwicklung.

Gegeben sei ein Schleifenkonstrukt, welches solange durchlaufen, bis eine der angegebenen Abbruchbedingungen erfüllt ist:

<?php
do {
 
    $iterations ++;
 
    // hier geschehen diverse Arbeitsschritte
 
} while ($countCurrent < $countDesired 
    || $iterations >= 5);

Bei jedem Durchlauf der Schleife wird zum Einen der Iterationszähler um eins erhöht und zum anderen ein paar Daten gesammelt. Zum Schluss wird geprüft, ob genügend Daten zusammengekommen sind. Um sicherzustellen, dass diese Schleife nicht zu oft durchlaufen wird (was ja Rechenzeit kostet), dient der Iterationszähler. Sobald er einen bestimmten Wert erreicht hat, wird die Schleife abgebrochen.

Wann beendet sich also diese Schleife?

Wenn genügend Daten zusammengekommen sind oder wenn der Iterationszähler größer oder gleich fünf ist? Nein.

In diesem Fall beendet sich die Schleife, wenn genügend Daten zusammengekommen sind oder Iterationszähler kleiner fünf ist!

Das funktioniert gut, wenn in den ersten vier Durchläufen genügend Daten zusammenkommen. Sobald aber fünf oder mehr Durchläufe benötigt werden, wird diese Schleife niemals beendet. Und genau das ist hier passiert.

Was lernen wir daraus?

  • Ein falscher Vergleichsoperator kann fatale Folgen haben.
  • Die fatalen Folgen treten unter Umständen erst viel später auf (die entsprechende Stelle funktionierte jetzt mehrere Tage problemlos).
  • Die Abbruchbedingungen von „gefährlichen“ Schleifen müssen klarer formuliert werden.

Der schnellste Bugfix wäre in diesem Fall:

<?php
do {
 
    $iterations ++;
 
    // hier geschehen diverse Arbeitsschritte
 
} while ($countCurrent < $countDesired 
    || $iterations < 5);

Verständlicher ist es aber so:

<?php
do {
 
    $iterations ++;
 
    if ($iterations >= 5) {
        break;
    }
 
    // hier geschehen diverse Arbeitsschritte
 
} while ($countCurrent < $countDesired);

23. Juli 2012: Erreichbarkeitsprobleme MTB-News.de und Rennrad-News.de

Am Montag, 23. Juli 2012, kam es tagsüber bei mtb-news.de und rennrad-news.de zu Erreichbarkeitsproblemen bei ca. ein Drittel unserer Benutzer. Der Grund war ein DDoS-Angriff auf die Nameserver unseren DNS-Providers.

Wir hatten das gleiche Problem schon einmal – am 5. Dezember 2006 (damals noch bei einem anderen Anbieter). Damals hatte ich einen Artikel zu den Hintergründen des DNS-Systems geschrieben. Vielleicht ist das ja für den einen oder anderen interessant.

Das Szenario vom 23. Juli glich dem aus dem Jahre 2006 ziemlich, wieder waren fast alle Nameserver und damit auch unsere Websites für viele User nicht erreichbar.

Wir haben gestern Abend die DNS-Auflösung für mtb-news.de und rennrad-news.de in die Hände eines anderen Anbieters gelegt, der hoffentlich gegen diese Art von Angriffen besser geschützt ist.