Jump to content
xt:Commerce Community Forum

mysqld mit CPU über 200% und kein Zugang


jmartins

Recommended Posts

Lieber Forum,

ich habe im moment ein großes Problem mit dem Webshop, nämlich wenn ich 'top' in linux aufführe, läuft mysqld mit CPU immer über 100% (meistens 200%) und manchmal ist dauerhaft über 700%. In diesen Momente kann man im Shop nichts machen und hat man kein Zugrif zum Backend. Der Shop läuft mit Xt:Commerce 4.2 und cpu ist familie 6 und ich vermute hat 12 cores.

wenn ich im MySQL

SHOW FULL PROCESSLIST;

die meist anfragen sind

SELECT pc.code FROM xt_plugin_code pc INNER JOIN xt_plugin_products pp ON pc.plugin_id = pp.plugin_id WHERE pc.hook = 'class.template:getTemplate_assign_default' AND pc.code_status = 1 and  pp.plugin_status = 1 order by pc.sortorder

Wenn man den query SHOW GLOBAL STATUS aufführt, Threads_running zeigt auch mehr als 100.

Handelt es sich um eine DDoS attack?

Ich bitte um Eure hilfe.

Vielen Dank,

Martins

Link to comment
Share on other sites

  • 2 months later...

Das kann mehrere Gründe haben. Attacke, korrupte Datenbank, korrupter Index, allgemeine IO-Last zu hoch und parallel dazu zu kleiner DB-Cache, DB-Abfrage selbst ist lahm oder aber eine andere Abfrage blockiert diese Abfrage (Flaschenhals-Effekt von MySQL), Festplatte oder Raid hat eine Macke usw

Ich würde mir nun eine ruhige Minute suchen und die Abfrage testen. D.h. CPU Last ist gering und dann z.B. über phpmyadmin die Abfrage wiederholen. Natürlich nur SELECT-Abfragen und keine Abfragen, die Änderungen an der DB durchführen wie INSERT/UPDATE/DELETE. Außerdem ergänzt du die Abfrage um die Option SQL_NO_CACHE, also so:

SELECT SQL_NO_CACHE pc.code FROM xt_plugin_code pc INNER JOIN xt_plugin_products pp ON pc.plugin_id = pp.plugin_id WHERE pc.hook = 'class.template:getTemplate_assign_default' AND pc.code_status = 1 and  pp.plugin_status = 1 order by pc.sortorder 

Wenn diese Abfrage dann immer schnell ist, dann liegt es schon mal nicht an der Abfrage. Falls langsam, dann prüfen ob Indexe fehlen.

Ob nun eine DDoS dafür in Frage kommt, könnte man dagegen über mod_status in Erfahrung bringen:
https://httpd.apache.org/docs/2.4/mod/mod_status.html

Dann siehst Du alle aktuell offenen HTTP-Verbindungen. Sind hier normal viele IPs verbunden (bedenke, dass die Leute F5 drücken), dann kann es kein DDoS sein.

Mit PROCESSLIST siehst du aber auch als root alle Prozesse aller User ja? Nicht dass im Hintergrund ein Backup von der Datenbank z.B. vom Hoster gezogen wird und daher der Stillstand resultiert.

Link to comment
Share on other sites

  • 6 months later...

Hallo mgutt,

vielen Dank und sorry, dass ich mich so spät melde.

Letztendlich habe ich SphinxSearch installiert und hatte dann keine solche extreme Probleme mehr. Die Ursache für den Last liegt immer noch irgendwo im Datenbank, weil auch Time To First Byte immer noch sehr hoch ist, aber zumindest läuft der Laden. Ich melde mich wieder und bericht den Forum, wenn ich mehr Infos habe.

Vielen Dank noch mal.

Joao

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...