Neu Hohe MySQL CPU-Aulastung

  • Wichtiger Hinweis Liebe Kunden, solltet Ihr den DATEV Rechnungsdatenservice 2.0 nutzen, dann müsst Ihr bis zum 30.06.2024 JTL-Wawi 1.9 installieren. Danach wird die Schnittstelle für ältere Versionen nicht mehr unterstützt.
  • JTL-Connect 2024: Ihr habt noch kein Ticket? Jetzt Early Bird Ticket zum Vorzugspreis sichern! HIER geht es zum Ticketverkauf

weinrank

Aktives Mitglied
14. Dezember 2020
13
0
Hallo zusammen,

wir beobachten bei einem Kunden eine ungewoehnlich hohe CPU-Aulastung durch den MySQL-Dienst.
Die restlichen Dienste (Apache, PHP-FPM, Redis) sind im entspannten Bereich.
Uebliche Optimierungen an der MySQL-Config haben wir bereits vorgenommen.

Bei der Analyse der Queries sticht uns einer ins Auge:
SQL:
SELECT `cBildpfad` AS PATH FROM `tmerkmalwert` WHE...

Insgesamt scheinen die Abfragen in Richtung Merkmale fuer einen Grossteil der Last verantwortlich zu sein.

Ist das bei euch auch so?
Laesst sich das optimieren?

LG

Screenshot 2024-05-25 134129.png
 

weinrank

Aktives Mitglied
14. Dezember 2020
13
0
Ergaenzung: unsere aktueller MySQL-Config

Code:
[mysqld]
innodb_buffer_pool_size=4G
innodb_log_file_size=1G
skip-name-resolve
performance_schema=ON
optimizer_search_depth=0
join_buffer_size=64M
table_definition_cache=1024
tmp_table_size=64M
max_heap_table_size=64M
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.799
1.648
Berlin
Du solltest dir mal diesen Beitrag gut durchlesen und überlegen, ob das dein Problem ist.
https://forum.jtl-software.de/threads/sitemap-wird-bei-bing-wird-wegen-fehler-abgelehnt.209842/

Hiermit könntest du prüfen, ob du ein Problem mit den Bots hast, das legt dir im jtllogs Verzeichnis ein tagesabhängiges Zugriffslog an.
Wenn du mit der Überwachung fertig bist, solltest du das wieder deaktivieren.

PHP:
[CODE]/*
 * Bitte am Ende der /includes/config.JTL-Shop.ini.php Datei einfuegen
*/
if(!empty($_SERVER['HTTP_USER_AGENT']) && !empty($_SERVER['REQUEST_URI']) && $fp = fopen(PFAD_ROOT."jtllogs/zugriffslog_".date("d-m-Y").".log","a+")) {
    fwrite($fp,date("H:i:s")."    ".$_SERVER['REMOTE_ADDR']."                ".$_SERVER['HTTP_USER_AGENT']."\n");
    fwrite($fp,$_SERVER['REQUEST_URI']."\n");
    fwrite($fp,"---------------------------------------------------------------------------------\n");
    fclose($fp);
}
[/CODE]
 

weinrank

Aktives Mitglied
14. Dezember 2020
13
0
@css-umsetzung Danke!

Das war ein Schubs in die richtige Richtung.
Ich habe mir die apache access-logs angeschaut, dabei sind wir hohe Zugriffszahlen von einem Bot aufgefallen:
Code:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)

Ein Blick in die Webalizer Auswertungen bestaetigte das Ergebnis, knapp 750.000 Seitenaufrufe in 11,5 Stunden.
Macht rund 20 Seitenaufrufe pro Sekunde. Kein Wunder, dass die Kiste Stress hat.

Ich habe das ungefragte aufwaermen des Caches mit einer .httaccess Anpassung mal abgestellt.
Der Server ist wieder in entspannten Fahrwassern.

Folgende Regel ist drin:
Code:
RewriteCond %{HTTP_USER_AGENT} ^.*(ClaudeBot|Pinterestbot).*$ [NC]
RewriteRule . - [F,L]

Wir werden das weiter beobachten.
 

Anhänge

  • Screenshot 2024-05-26 115633.png
    Screenshot 2024-05-26 115633.png
    68,4 KB · Aufrufe: 7

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.799
1.648
Berlin
Mach das lieber so wie in dem Beitrag vorgeschlagen in der htaccess, um die regulären Bots in Ihren Aufrufen zu disziplinieren und gegen die bösen Bots hilft dies hier in der config vom Shop und kann dann beliebig erweitert werden.

Das Problem sind nicht die php sondern eher die MySQL abfragen, daher macht sich der Schnipsel in der config ganz gut.

PHP:
if(!empty($_SERVER['HTTP_USER_AGENT']) && preg_match("/Mb2345Browser|LieBaoFast|zh-CN|MicroMessenger|zh_CN|Kinza|MJ12bot|AhrefsBot|Bytespider/",$_SERVER['HTTP_USER_AGENT'])) {
    header('HTTP/1.0 403 Forbidden');
    die("zugriff nicht erlaubt");
}
 

weinrank

Aktives Mitglied
14. Dezember 2020
13
0
@css-umsetzung

Die von mir eingesetzte mod_rewrite Regel macht das gleiche wie deine Vorschlag in PHP:
Wenn "ClaudeBot" (das war hier der Uebeltaeter) oder "Pinterestbot" im User-Agent String enthalten ist --> Forbidden Status zurueckgeben und Ende.

Die Anpassungen an der robots.txt werden wir uns im Laufe der Woche anschauen.
 

HMside

Aktives Mitglied
14. April 2019
56
14
Du solltest dir mal diesen Beitrag gut durchlesen und überlegen, ob das dein Problem ist.
https://forum.jtl-software.de/threads/sitemap-wird-bei-bing-wird-wegen-fehler-abgelehnt.209842/

Hiermit könntest du prüfen, ob du ein Problem mit den Bots hast, das legt dir im jtllogs Verzeichnis ein tagesabhängiges Zugriffslog an.
Wenn du mit der Überwachung fertig bist, solltest du das wieder deaktivieren.

PHP:
[CODE]/*
 * Bitte am Ende der /includes/config.JTL-Shop.ini.php Datei einfuegen
*/
if(!empty($_SERVER['HTTP_USER_AGENT']) && !empty($_SERVER['REQUEST_URI']) && $fp = fopen(PFAD_ROOT."jtllogs/zugriffslog_".date("d-m-Y").".log","a+")) {
    fwrite($fp,date("H:i:s")."    ".$_SERVER['REMOTE_ADDR']."                ".$_SERVER['HTTP_USER_AGENT']."\n");
    fwrite($fp,$_SERVER['REQUEST_URI']."\n");
    fwrite($fp,"---------------------------------------------------------------------------------\n");
    fclose($fp);
}
[/CODE]

Erstmal vielen Dank für die Bereitstellung des Skripts für die Log-Möglichkeit.

Ich habe das jetzt mal ca. 2 Stunden laufen lassen und habe z.B. Einträge wie die folgenden.

522 Treffer (fast alle Aufrufe in dieser Form):
Code:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/116.0.1938.76 Safari/537.36
/?suchausdruck=pion+pro&fq0=manufacturer:Mi-Heat&fq1=manufacturer:SUNdirect&fq2=manufacturer:Ondolia&fq3=manufacturer:PRO+CAR&fq4=manufacturer:HeatPlus&fq5=manufacturer:Magnum&fq6=manufacturer:Caleo&fq7=manufacturer:infrarot-fussboden-de&fq8=category:Heizungen+f%FCr+Rasterdecken

484 Treffer (normale Aufrufe auf Produkte und andere Seiten):
Code:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GeedoProductSearch; +http://www.geedo.com/product-search.html) Chrome/79.0.3945.88 Safari/537.36

88 Treffer (alle Aufrufe in dieser Form):
Code:
Mozilla/5.0 (compatible; Barkrowler/0.9; +https://babbar.tech/crawler)
/?suchausdruck=pion+pro&fq0=manufacturer:Mi-Heat&fq1=manufacturer:Warmup&fq2=manufacturer:Danfoss&fq3=manufacturer:Ondolia&fq4=manufacturer:PRO+CAR&fq5=manufacturer:HeatPlus&fq6=manufacturer:MCO+Home&fq7=manufacturer:Magnum&fq8=manufacturer:Ballu&fq9=manufacturer:Caleo&fq10=manufacturer:Thermal+Technology&fq11=manufacturer:infrarot-fussboden-de&fq12=category:150-160+Watt%2Fm%B2+Heizfolie

28 Treffer (alle Aufrufe in dieser Form):
Code:
Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)
/?Sortierung=1

9 Treffer (fast alle Aufrufe in dieser Form):
Code:
Mozilla/5.0 (compatible; YandexRenderResourcesBot/1.0; +http://yandex.com/bots) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0
/Comfort-Heating-Film-with-Earthing-180Watt/m-90cm-wide-fully-assembled-4m-36m?jtl-debug=1&jtl-debug-session=1&isAjax=true

Was davon ist jetzt tatsächlich kritisch und sollte ausgesperrt werden?
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.799
1.648
Berlin
Die von mir eingesetzte mod_rewrite Regel macht das gleiche wie deine Vorschlag in PHP:
Wenn "ClaudeBot" (das war hier der Uebeltaeter) oder "Pinterestbot" im User-Agent String enthalten ist --> Forbidden Status zurueckgeben und Ende.
Ich sage es mal so....
der Apache muss bei jedem Aufruf, egal ob Bild oder css oder was auch immer schauen was alles in der htaccess steht und die Regeln prüfen.

Meine Meinung ist da ganz klar:
Ich möchte ja nur, dass der betreffende Bot nicht die Performance vom Shop herunterzieht, also ist es mir wurscht ob der auf andere Ressourcen zugreift, so lange mein Shop nicht unnötig aktiv ist.



Was davon ist jetzt tatsächlich kritisch und sollte ausgesperrt werden?
Der einfachste Weg ist immer sich den jeweiligen Bot zu nehmen, danach zu suchen und zu schauen ob der als schädlicher Bot eingestuft worden ist oder nicht, bzw. ob man der Meinung ist das es Sinnvoll ist den im Shop die Seiten zu crawlen.

Dann gibt es ja noch die von JTL zur Verfügung gestellte robots.txt die man bei sich erweitern sollte.
https://forum.jtl-software.de/threads/sitemap-wird-bei-bing-wird-wegen-fehler-abgelehnt.209842/
 
  • Gefällt mir
Reaktionen: HMside

holzpuppe

Sehr aktives Mitglied
14. Oktober 2011
1.695
247
Leipzig
Ich wurde vor zwei Tagen von meinem Hoster kontaktiert, dass meine Temp-Ordner eine extrem hohe Anzahl an Dateien enthalten.
Ich konnte das bereinigen. Der Übeltäter: ClaudeBot.
Hat mein Festplatten-Kontingent auf 85% zugemüllt. Jetzt bin ich wieder bei 14%. Alter Schwede. Was für ein aggressives Miststück.
 

holzpuppe

Sehr aktives Mitglied
14. Oktober 2011
1.695
247
Leipzig
ClaudeBot ist ein Bot für das Daten-Sammeln eines "Large Language Modul". Also AI/KI bezogen. Ich denke da werden in den nächsten Wochen, Monaten und Jahren mehrere dieser Dinger das Netz aussaugen wollen.
 

HMside

Aktives Mitglied
14. April 2019
56
14
Ich sage es mal so....
der Apache muss bei jedem Aufruf, egal ob Bild oder css oder was auch immer schauen was alles in der htaccess steht und die Regeln prüfen.

Meine Meinung ist da ganz klar:
Ich möchte ja nur, dass der betreffende Bot nicht die Performance vom Shop herunterzieht, also ist es mir wurscht ob der auf andere Ressourcen zugreift, so lange mein Shop nicht unnötig aktiv ist.




Der einfachste Weg ist immer sich den jeweiligen Bot zu nehmen, danach zu suchen und zu schauen ob der als schädlicher Bot eingestuft worden ist oder nicht, bzw. ob man der Meinung ist das es Sinnvoll ist den im Shop die Seiten zu crawlen.

Dann gibt es ja noch die von JTL zur Verfügung gestellte robots.txt die man bei sich erweitern sollte.
https://forum.jtl-software.de/threads/sitemap-wird-bei-bing-wird-wegen-fehler-abgelehnt.209842/

Vielen Dank für deine Hilfe. Ich habe nun erstmal die robots.txt gefüttert und werde nun mal beobachten wie sich das entwicket.

Hat vielleicht noch jemand einen Hinweis, was sich im Webstat hinter "feed" unter "Robots/Spiders visitors" genau verbergen könnte? Sind das die Produkt-Feeds, welche wir z.B. für Google und Adcell zur Verfügung stellen?


bots.png
 

Aurel Dragut

Aktives Mitglied
3. März 2021
40
1
1. Man sollte alle Bots blockieren, die nicht wichtig sind. Die bringen unnötige Last.
2. Diese Abfrage sollte gerufen werden, nur wenn man Bilder bei Merkmalwerte verwendet. Sonst sind die unnötige Abfragen und wieder unnötige Last.