7 x kompletter Datenbankabsturz in 24 Stunden...:-(

Hallo zusammen, wir sind seit gestern Mittag mit unserem 4.04 online und haben in dieser Zeit bereits 7 Datenbankabstürze samt kompletter Unerreichbarkeit und anschließendem Neustart hinter uns…:-(… Der Shop läuft auf einem HostEurope Virtual Server Managed XXL und lief, noch als 3.56, über Monate superstabil und ohne jegliche Abstürze. Laut HE Support ist bei unserem 4.04 jedesmal die Datenbank komplett ausgestiegen. Zum Teil sollen die Abstürze durch einen bingbot verursacht worden sein der die Datenbank zum kollabieren gebracht hat…allerdings hatten wir solche Abstürze unter 3.56 nie, d.h. ich denke das der Crawler unserer 4.04 Datenbank nur vollends den Rest gegeben hat…auf alle Fälle hatten wir solche Datenbankabstürze durch Crawler mit 3.56 nie und es wäre ein seeeeehr merkwürdiger Zufall (wenn es so wäre sollte ich heute Lotto spielen…:-)…) wenn das ausgerechnet zufällig mit unseren Launch der 4.04 zusammengefallen wäre… Wir haben auf alle Fälle nach den ersten 2 Abstürzen über die robots.txt den bingbot verlangsamt (Crawl-delay: 3) und, als das nicht Mal das half, jetzt die IP über die .htaccess komplett gesperrt… Mal sehen wie der Spass weitergeht… Laut HE Support kann es nicht an der Hardware liegen da sich diese den überwiegenden Teil der Zeit (CPU ist kaum ausgelastet, 3 GB fix, über die .htaccess 256MB memory limit) langweilt. An Artikeln (ca. 90 Artikel) und Besucheransturm (gerademal 500-600 am Tag) wohl auch nicht… Das Ganze erinnert mich an ein bißchen an die Geschichte von Rainer (rascob) von vor ein paar Tagen…Shop rennt stundenlang wie blöd und dann plötzlich ohne Vorwarnung BOOM…:frowning: Wir warten momentan auf die Slowquerie Logs von HE und beobachten das Ganze… Jemand eine Idee wie man die Datenbank optimieren könnte?

Hallo, falls Sie hier weitere Probleme haben, können wir gerne einmal drauf schauen, wenn Sie uns die Zugangsdaten(phpMyAdmin, Backend-Login, FTP) an entwicklung@shopware.de zusenden. Viele Grüße, Marcel

Das ist ein nettes Angebot. Ich würde gerne darauf zurückkommen. :slight_smile: Lieben Gruß!

Habt ihr schon das Slow-Query-Log bekommen? Sehen die Einträge aus wie diese hier? http://jira.shopware.de/Widgets/Jira/?ticket=SW-4497 Wenn der Server mal wieder lahmt, könnt ihr auch mal in PHPMyadmin unter “Prozesse” schauen. Dort dürfte dann auch obige Anfrage auftauchen, natürlich nur, wenn der Server überhaupt noch reagiert.

Hallo Shopware Team, Hallo Forum, wir verwenden einen leistungsfähigen Webserver und einen dedizierten MySQL-Server und haben trotzdem das Problem einer schlechten Performance. Die Probleme treten hierbei in der Generierung der Listansichten auf, da hier sehr “teure” Datenbankanfragen gestellt werden. Diese dauern auch bei unserer Hardware ein paar Sekunden. Durch Diagnose der relevanten Queries konnte ich feststellen, dass diese niemals gecacht werden. Der Grund ist folgender: Die verwendeten Queries für das Produktlisting verwenden Datums- und Zeitfunktionen von MySQL (CURDATE(), NOW()). Dadurch kann MySQL diese Queries nicht cachen und muss diese jedesmal neu ausführen. Ich habe diese Funktionen auf PHP verlagert und siehe da: MySQL kann dann cachen. Ich denke, dieser Beitrag betrifft auch diese Beiträge: programmierung-f56/shop-erzeugt-eine-enorme-last-auf-mysql-t10062-20.html (Thema gesperrt!) allgemein-f25/grosze-performance-probleme-4-0-bug-t9985.html Anbei der Lösungsansatz, der schon eine Menge bringt. @Shopware: Es gibt vermutlich noch diverse andere Stellen, wo man analog optimieren kann. Ich werde dies auch noch in den Bugtracker packen. Save your Planet! Viele Grüße, Boris Patch: Index: class/sArticles.php =================================================================== @@ -904,6 +904,9 @@ $markNew = (int)$this-\>sSYSTEM-\>sCONFIG['sMARKASNEW']; $topSeller = (int)$this-\>sSYSTEM-\>sCONFIG['sMARKASTOPSELLER']; + $curdate = strftime('%Y-%m-%d'); + $now = $curdate . ' 01:00:00'; + $sql = " SELECT a.id as articleID, aDetails.id AS articleDetailsID, a.notification as notification, weight, aDetails.ordernumber, a.datum, aDetails.releasedate, @@ -931,10 +934,10 @@ FROM s\_articles\_vote WHERE active=1 AND articleID=a.id), '0.00|00') as sVoteAverange, - IF(DATEDIFF(NOW(), a.datum)\<=$markNew,1,0) as newArticle, + IF(DATEDIFF('$now', a.datum)\<=$markNew,1,0) as newArticle, IF(aDetails.sales\>=$topSeller,1,0) as topseller, - IF(aDetails.releasedate\>CURDATE(),1,0) as sUpcoming, - IF(aDetails.releasedate\>CURDATE(), aDetails.releasedate, '') as sReleasedate + IF(aDetails.releasedate\>'$curdate',1,0) as sUpcoming, + IF(aDetails.releasedate\>'$curdate', aDetails.releasedate, '') as sReleasedate FROM s\_categories c, s\_categories c2, s\_articles\_categories ac JOIN s\_articles AS a @@ -1278,6 +1281,9 @@ } } } + + $curdate = strftime('%Y-%m-%d'); + $now = $curdate . ' 01:00:00'; $sql = " SELECT @@ -1307,7 +1313,7 @@ JOIN s\_articles a ON a.id=ac.articleID AND a.active =1 - AND a.changetime \<= NOW() + AND a.changetime \<= '$now' JOIN s\_filter f ON f.id=a.filtergroupID