Suche MySQL und PHP Experten mit Drupal 7.X Erfahrung für Optimierung der Datenbankabfragen
am 30.10.2012 - 22:49 Uhr in
Hallo an alle Drupal/PHP/MySQL-Experten und Programmierer,
ich betreibe schon seit einigen Jahren eine Website Community auf der Basis von Drupal. Kürzlich habe ich diese von Drupal 5.x auf Drupal 7.x aktualisiert. Seitdem habe ich ernste Probleme mit der Website (vor allem mit den Datenbankabfragen).
Problembeschreibung:
Ständig wird die Verbindung zum Datenbankserver unterbrochen (PDOException-Fehlermeldung) oder die Verbindung dauert sehr lange.
Die Problematik ist meiner Vermutung nach vor allem bei der Datenbank Table: cache_form
Die Tabelle ist 35GB groß. Dort werden in der Column "data" im longblob-Format Daten gespeichert - pro Row zwischen 3kB und 100kB. Von dieser Art gibt es dann 1.3 Mio Rows.
Ein einzelnes SELECT in dieser Tabelle mit ORDER BY-Statement hat jetzt über 900
Sekunden gedauert.
Bedingt durch dieses riesige Table geht der mysqld OOM, wodurch dann andere Tables crashen, die nicht repariert werden können, weil o.g. Problem mit riesigem Table besteht.
Vor allem folgende Table crasht immer wieder (fast täglich):
- accesslog
Ich dachte immer, dass im Normalfall der Cron diese Tabelle (cache_form und cache_menu) mit löschen sollte. Ich habe den Cron aber schon mehrmals laufen lassen und dann geschaut, wie groß die Tabelle ist. Leider hat das nichts gebracht.
Die Tabellen cache_form und cache_menu füllen sich einfach zu schnell mit Daten. Dann habe ich versucht, die Tabellen direkt in der Datenbanken per PHPmyadmin zu leeren (nicht löschen). Allerdings sind die Tabellen im Handumdrehen wieder voll mit Einträgen und über 20 GB groß.
Wie kann das sein, dass so viele Datenbankeinträge in solch kurzer Zeit angelegt werden? Bin ich Opfer einer Spam-Attacke? Ich habe im Durschnitt etwa 1000 Besucher pro Tag.
Versuch eines Patches (leider erfolglos):
Ich habe in Bezug auf dieses Problem auch den Vorschlag von einem Forumsmitglied hier bekommen, in diesem Issue: http://drupal.org/node/230374 ein Patch / Vorgehen anzuwenden. Ich verstehe das Vorgehen nur nicht ganz. Gilt dieses nur für Drupal 6.x?
Weiterhin sorgt der Patch nach meinem Verständnis lediglich dafür, dass die Daten nach einer kürzeren Zeit aus dem Cache wieder gelöscht werden.
Problembehandlung:
Kann man aber die Datenbankstruktur bzw. die Drupal 7.x Installation soweit optimieren, dass sich auch gar nicht mehr so schnell so viele Daten ansammeln?
Falls es sich um einen Spam-Angriff handelt, wie kann ich mich davor schützen?
Auftrag:
Ich suche nun einen Drupal/PHP/MySQL-Experten, der dieses Problem für mich löst. Bitte senden Sie mir bei Interesse an dem Job eine kurze Einschätzung der notwendigen Arbeitszeit und der ungefähren Kosten. Dafür wäre ich Ihnen sehr dankbar. Abrechnung über eine Rechnung ist erwünscht.
Bitte Nachrichten hier über das Forum oder an info[at]magicofword.com.
Vielen Dank für Ihre Unterstützung!
- Anmelden oder Registrieren um Kommentare zu schreiben
Anleitung zu einem potentiellen Patch
am 30.10.2012 - 22:52 Uhr
Hallo nochmal,
vielleicht ist dieser Beitrag noch hilfreich:
http://drupal.org/node/930876
Don't go through life, grow through life! More quotes and sayings can be found on my Drupal 7.x website Magicofword.com
Hallo Silver Sunrise,
am 14.11.2012 - 15:13 Uhr
Evtl. kann Dir folgendes helfen:
1.
Ist Deine DB Engine InnoDB oder ISAM?
MYISAM ist da etwas schneller (ohne indexe und relationen welche drupal nicht nutzt) und benötigt weniger resourcen.
2.
In Deinem Select Statement holst du den Blob, oder durchsuchst Du gar den Blob?
Hast du das SELECT Statment durch einen LIMIT begrenzt und holst nur die ID des Blobs?
Das ist leider nicht ersichtlich
Vermutlich wirst Du aber um eine Architektur Umstellung nicht herumkommen.
Der Drupal,Apache,PHP,MYSQL Stack ist für wirklich performante und Datenbanklastige
Anwendungen einfach nicht geeignet (memory limits, timeouts, fehlende thread kontrolle).
Für eine optimale Performance würde ich hier eine Umstellung von einem mehrschitigen System
in eine mehrschichtige Architektur empfehlen.
MfG
Hype
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Danke
am 14.11.2012 - 23:08 Uhr
Hallo Hype,
vielen Dank für deine Antwort.
Ich kann mittlerweile aber sagen, dass mir hier von professioneller Seite sehr geholfen wurde. Meine Website läuft jetzt schneller denn je. Lag wohl an einem unsauberen Upgrade von Drupal 5 auf Drupal 7. Dabei wurden einige DB Tabellen einfach fälschlicherweise mit migriert und auch noch bedient. Das wurde nun behoben mit einer sauberen Drupal 7 Neuinstallation.
Besten Dank an alle Froumsmitglieder an dieser Stelle!
Don't go through life, grow through life! More quotes and sayings can be found on my Drupal 7.x website Magicofword.com