28. January 2007, 21:09, by Silvan Mühlemann

Replikation mit MySQL: Tricky!

DelfinPro Sekunde werden auf tilllate.com 5000 Abfragen von den Datenbank-Servern beantwortet. Wie können wir diese Last auf 30 Datenbank-Server verteilen? Mit Replikation. Aber auch nach fünf Jahren Erfahrung habe ich dieses Feature noch nicht ganz im Griff.

Auf Datenbank-Ebene besitzt tilllate.com vier Servergruppen mit unterschiedlichen Funktionen (= “horizontale Skalierung”): Werbung, Statistik, Chat und schliesslich der Rest der Website tilllate.com. Werbung, Statistik und Chat kommen mit einem einzelnen Datenbank-Server aus.

Der “Rest” macht 90% der Abfragen aus. Der Rest sind 27 MySQL Datenbank-Server. Auf diesen 27 Server befindet sich eine identische Kopie der Haupt-Datenbank. Damit dies so bleibt, muss jede Änderung der Datenbank (z.B. eine UPDATE-Query) wird über einen definierten Weg auf alle 27 Maschinen repliziert. Wir benutzen hier die Replikations-Features von MySQL.

Einfache Master-Slave-Replikation
(more…)

19. January 2007, 14:03, by Silvan Mühlemann

Interview with the tilllate-AJAX-Chat developer.

Portrait CiprianAfter 4 years having a slow reload-frame-based chat (also called “codename Neandertal”) tilllate has launched a new, state-of-the-art chat. In addition of average-joe chat functionality you can also open your own private rooms and invite your friends there. I spoke with Ciprian, our developer of this product.

Screenshot chat

How successful is the new tool?
The tilllate members seem to chat a lot in the new chat. Almost 100 000 messages the 1st day, and 125 000 the second day. I think it’s quite a lot. But there were also bug reports. Really weird ones: “There’s something wrong with tilllate. They don’t have the old slow and ugly chat anymore. This must be an error! With such a cool chat I am going to spend even more time on tilllate. That’s bad for my career.”
A new thing for me was to hear somebody complaining the web it’s too fast (“Es isch fast zu schnell!!“).
(more…)

Filed under: tilllate.com,Web Development
14. January 2007, 13:51, by Silvan Mühlemann

phpAdsNew im kommerziellen Einsatz

BillboardHöre ich von Web-Applikationen, deren Namen mit “php” beginnen, sträuben sich bei mir die Nackenhaare: Meist sind dies löchrige Bastelarbeiten für die private Homepage. Eine derartige App sorgt aber für 95% von unserem Umsatz: phpAdsNew.

Täglich über drei Millionen Bannereinblendungen werden bei tilllate durch dieses Tool ausgeliefert. Damit eine derartige Performance überhaupt möglich ist, mussten wir phpAdsNew in einem Cluster aufbauen: Request auf das Ad-Tool laufen über einen Load Balancer auf momentan zwei identische Dual-Xeon/4GB/Gentoo-Mühlen. Dort läuft die Applikation (natürlich mit e-Accelerator) und greift auf einen weiteren DB-Server zu (MySQL5).
(more…)

Filed under: tilllate.com
7. January 2007, 18:32, by Silvan Mühlemann

Optimierung von MySQL-Abfragen: Verwendung des Index

DolphinVor zwei Wochen habe ich erklärt, wie man mit dem Slow-Query-Log die langsamsten Datenbank-Abfragen identifizieren kann. Nun möchte ich besprechen, wie man diese langsamen Queries beschleunigen kann. Nutze den Index ist die Zauberformel.

Die erste Frage: Was ist der Index? – Nun, das ist Euch bestimmt bekannt. Sonst hilft Wikipedia.

Schaut man sich an, wie die Dateien bei MySQL (MyISAM-Struktur) auf der Disk gespeichert ist, so ist die Index-Datei an der Endung MYI zu erkennen (MYD sind die effektiven Daten, frm die Tabellendefinition):

cameron tilllate # ls -lh users.*
-rw-rw---- 1 mysql mysql 65M Jan  7 16:51 users.MYD
-rw-rw---- 1 mysql mysql 90M Jan  7 16:51 users.MYI
-rw-rw---- 1 mysql mysql 15K Jan  6 06:20 users.frm

Die Index-Datei users.MYI wird bei MySQL im RAM gehalten, während die effektiven Daten (Usernamen, Passwörter, Adressen) auf der Disk bleiben. Ein Grund, dass der Zugriff schnell ist.
(more…)

Filed under: Database
3. January 2007, 18:30, by S R

Server-Relocation – Vom 1/2 ins 1/1 Rack

AufmacherOder was passiert wenn viele schöne Zugriffe einem zum aufstocken der Infrastruktur zwingen. Erfreulicherweise hat uns dies ein neues Rack beschert welches wir im Dezember beziehen durften.

Riv, Silvan und Ich (Stefan) machten uns deshalb eines Abends gegen 19:00 Uhr auf den Weg nach Zürich um alle Server vom alten 1/2 Rack ins neue 1/1 Rack zu migrieren. Glücklicherweise war dies im selben Raum zu finden wie schon das alte was uns eine mühsame Schlepperei ersparte und das umstecken des Uplinks zum Routineeingriff werden lies.
Der Plan war dabei wie folgt:

  1. Vorbereiten des neuen Racks (Connectivity, Strom und sonstige Kabel)
  2. Deaktivieren eines Blade Clusters und dem zugehörigen MySQL Master
  3. “Zügeln” des Blade Chassis und der Blades ins neue Rack
  4. Inbetriebnahme des Chassis nach sauberer Verkabelung
  5. Nachdem die Server am neuen Ort laufen das zweite Chassis abschalten
  6. Chassis 2 und alten Switch im neuen Rack montieren
  7. Umhängen des Uplinks vom alten zum neuen Rack
  8. Starten der Blades im Chassis 2 und überprüfen der Funktionen
  9. Aufräumen des alten Racks und sauberes Verkabeln des neuen Racks

Gross beschreiben möchte und muss ich vermutlich nicht, ich lasse lieber die Bilder für sich sprechen:

Unser altes 1/2 Rack ist ganz schön voll…
Altes Rack

(more…)

Filed under: IT Infrastructure

© 2014 tilllate Schweiz AG - Powered by WordPress