Shop Hosting
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Bremse: User xxx already has more than 'max_user_connections' active connections

    pidot

    • Neu im Forum
    • Beiträge: 36
    Hallo Zusammen,

    seit ein paar Tagen schaukelt sich da was hoch, was zu einem massiven Performance-Einbruch führt.
    Mache Updates brauchen bis zu 70 Sekunden, auch der hier sollte eigenlich sofort durch sein:
    Code: SQL  [Auswählen]
    QUERY [13.92747s] UPDATE specials
                         SET STATUS = '0',
                             date_status_change = now()
                       WHERE expires_date <= now()
                         AND expires_date > 0

    In der mod_warning steht dazu:
    Zitat
    User xxx already has more than 'max_user_connections' active connections

    Aussage vom All-Inkl. Support:
    Zitat
    Einzelne PHP Prozesse auf Ihre Seite scheinen sehr lange zu dauern.

    Durch die lange Laufzeit belegen diese Aufrufe die zur Verfügung stehenden PHP-FPM-Slots, somit sind keine weiteren Aufrufe auf die Domain möglich. In der Folge stauen sich die Anfragen auf und der Server überlastet.

    Die PHP-FPM-Slots sind pro Account limitiert. Wenn es mehrere oft frequentierte Domains im Account gibt, sollten diese daher am besten jeweils in einen eigenen Unteraccount verlagert werden.

    Ich stehe gerade auf dem Schlauch, habt ihr eine Idee ?

    Grüße
    Peter

    Linkback: https://www.modified-shop.org/forum/index.php?topic=42193.0

    Timm

    • Fördermitglied
    • Beiträge: 6.258
    Moin

    In includes/configure.php fälschlicherweise vielleicht pconnect auf True gesetzt?

    Gruß Timm

    pidot

    • Neu im Forum
    • Beiträge: 36
    Nein, steht auf false.

    pidot

    • Neu im Forum
    • Beiträge: 36
    Habe diverse Aufrufe mal im Testsystem gemacht - 0,2-0,3 Sekunden. Dann die aktuelle DB ins Testsystem gespielt und siehe da, 60-70 Sekunden.
    Betrifft irgendwie nur Zugriffe auf die products, products_description und die specials, der Rest vom Shop ist normal performant...
    ...oder es überschneidet sich da einfach nur was... Keine Idee mehr...
    Grüße
    Peter

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Setze mal folgende Queries über phpMyAdmin ab (am Besten nicht gleichzeitig sondern nacheinander):
    Code: SQL  [Auswählen]
    SHOW INDEXES FROM products;
    SHOW INDEXES FROM products_description;
    SHOW INDEXES FROM specials;

    Mache Screenshots von den jeweiligen Ergebnissen und poste sie hier.
    Dazu jeweils die Anzahl an Einträgen in der jeweiligen Tabelle.
    Das seht man wenn man in phpMyAdmin auf die Tabelle klickt ganz oben, da müsste dann etwas stehen wie
    "Zeige Datensätze 0 - XX (200049 insgesamt....".

    Gruß,
    noRiddle

    pidot

    • Neu im Forum
    • Beiträge: 36
    Hallo Zusammen,

    anbei die Screenshots...

    Grüße
    Peter

    Timm

    • Fördermitglied
    • Beiträge: 6.258
    Moin

    @noRiddle
    Bei mir sieht das fast genauso aus. Aber in products_description hab ich nur beim column_name products_id im Feld Cardinality den Wert NULL. Ist das so korrekt, oder schlecht für die Performance? In einer anderen Datenbank hab ich gesehen, dass es wie auf den Bildern von @pidot ist und alle 3 Werte bei Cardinality gleich sind.

    Gruss Timm

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    @FräuleinGarn
    Ja, ist ein Performance-Nachteil.
    Mache einfach mal
    Code: SQL  [Auswählen]
    ANALYZE TABLE products_description;

    Die Werte sind nur gleich bei einer einzigen aktivierten Sprache.
    Ansonsten müsste der Wert bei Columne_name language_id 2 x oder 3 x höher sein, je nach Anzahl der aktvierten Sprachen.

    Wenn man viel importiert und exportiert, also viel Artikel oft ändert und pflegt, empfiehlt es sich von Zeit zu Zeit ein
    Code: SQL  [Auswählen]
    ANALYZE TABLE TABLE_NAME;
    auf alle Tabellen zu machen. TABLE_NAME muß natürlich mit dem Namen der Tabelle ersetzt werden.
    Das kann man mittels phpMyQdmin-Tools machen oder mittels eines Skriptes.
    Mittels phpMyAdmin-Tools, alle Tabellen markieren und Aktion für alle markierten Tabellen auswählen.

    @pidot
    Wenn du jetzt noch die "Anzahl an Einträgen in der jeweiligen Tabelle"angegeben hättest, wie ich schrieb...
    In den Screenshots fehlt die Spalte "Comment". Wenn dort allerdings nirgends "disabled" steht scheint alles in Ordnung zu sein.
    Hatte vermutet, daß INDEXE ncht vorhanden oder deaktiviert und/oder Cardinalities nicht gesetzt sind.
    Sieht nicht so aus, wenn, wie gesagt, in "Comment" nichts gegenteiliges steht.

    Hast du irgend etwas am Code verändert ?
    Benutzt du Erweiterungen/Module ?
    Shop-Version ?

    Aktiviere mal Slow-Query-Logs
    Backend => Erw. Konfiguration => Logging Optionen => "Speichern der Datenbank Abfragen"
    und
    Backend => Erw. Konfiguration => Logging Optionen => "Slow Query Log"
    jeweils auf 'Ja', Zeit bei 1.0 .
    Dannach schausr du dir die Logs an unter /logs/.

    Auch du könntest trotz, daß alles eigtl. okay aussieht mal über alle Tabellen ein ANALYZE TABLE TABLE_NAME; machen (siehe oben). Außerdem ein OPTIMIZE TABLE TABLE_NAME; und wenn nichts hilft mal ein REPAIR TABLE TABLE_NAME;
    Bei allen Aktionen die über ANALYZE hinausgehen vorher die DB sichern !!

    Hoster übrigens sagen oft
    "Einzelne PHP Prozesse auf Ihre Seite scheinen sehr lange zu dauern."
    und schieben alles auf die Software, was natürlich auch sein kann, muß aber nicht.

    Gruß,
    noRiddle

    Timm

    • Fördermitglied
    • Beiträge: 6.258
    @noRiddle
    Danke dir, dann wird der Wert richtig gesetzt.

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Allerdings ist die Sprache Englisch im Shopbackend deaktiviert mit zwei roten Punkten. Dann sollte er bei language_id doch den gleichen Wert haben wie bei products_id, oder? Und das kann ich in einer anderen Datenbank auch so sehen und ist bei @pidot ja auch so. Ändert sich auch nicht, wenn man die Tabelle analysieren lässt.

    Gleichzeitig wird in der Tabelle products_description auch immer ein Produkt für jede Sprache angelegt und beim englischen Artikel steht beim Artikelnamen dann immer nur (copy) und der Rest der Zeile ist leer bis auf products_viewed, da steht noch eine 0. Je Höher die products_id, umso mehr (copy) werden es. Glaube maximal 12. Kann das daran liegen, dass ich zum erstellen neuer Artikel meist einen anderen Artikel kopiere und das ein Bug ist?

    Gruss Timm

    pidot

    • Neu im Forum
    • Beiträge: 36
    Moin

    @noRiddle: Datensatz 1 von x wird bei Show index... bei mir nicht angezeigt (siehe Anhang)
    Comment habe ich weggelassen weil alle leer.
    ANALYZE, OPTIMISE und REPAIR habe ich auch schon durch, ohne Wirkung.
    Shop ist 2.0.6.0-r13500 und an Modulen nur Sofort und Paydirect, sonst nix.

    Grüße
    Peter

    Timm

    • Fördermitglied
    • Beiträge: 6.258
    Die Anzahl der Datensätze findest du, wenn du in die Tabellen reingehst und dort ganz oben. Siehe mein Screenshot in meinem letzten Post.

    Gruss Timm

    pidot

    • Neu im Forum
    • Beiträge: 36
    @Timm: Verstanden ;-)

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    @Fräulein Garn
    Wenn Englisch deaktiviert wird verschwinden dadurch nicht die bei Installation angelegten englischen Werte in den DB-Tabellen, was ich auch als sinnvoll erachte. Ansonsten hätte man code-technisch und organisatorisch einen Riesen-Aufwand bei Reaktivierung einer Sprache. in der Db ist also was die Anzahl der Einträge betrifft alles in Ordnung.
    Ich habe keine Code-Analyse gemacht und weiß nicht woher das "(copy)" kommt.

    @pidot
    Liest du auch genau was ich schreibe ?
    "Zeige Datensätze 0 - XX (12345 insgesamt...." sieht man wenn man auf die Tabelle klickt, wie ich schrieb, nicht wenn man SHOW INDEX absetzt.
    Mit "Erweiterungen/Module" meinte ich nicht shop-eigene Module wie Zahlungsmodule die es bereits in der Standard-Installation gibt sondern Zusatz-Module und Code-Anpassungen. Deshalb auch u.A. die Frage "Hast du irgend etwas am Code verändert ?" die unbeantwortet blieb.
    Was ist mit den Slow-Query-Logs ?

    Aber weißt du was ? Dein Bemühen ist mir zu wenig.
    Ich setze mich hier ein und du liest nur die Hälfte, ich muß nachhaken  und .., ach lassen wir das. Ich bin raus. Wirsing.

    Gruß,
    noRiddle

    pidot

    • Neu im Forum
    • Beiträge: 36
    Was mir abergefallen ist:
    Nach quasi jedem Query laufen Updates auf die Specials, aber nicht einmal, sondern gleich mehrfach, siehe hier:

    Code: SQL  [Auswählen]
    06/01/2022 12:24:52 QUERY [49.04064s] SELECT p.products_id FROM products AS p
                      JOIN products_description AS pd ON (p.products_id = pd.products_id AND TRIM(pd.products_name) != '' AND pd.language_id = '2') LEFT OUTER JOIN specials AS s ON (p.products_id = s.products_id)  AND s.status = '1' AND (s.start_date <= now() OR s.start_date IS NULL OR s.start_date = 0) AND (s.expires_date >= now() OR s.expires_date IS NULL OR s.expires_date = 0)   WHERE p.products_status = '1'  AND (  ( pd.products_keywords LIKE ('%bugtasche%') OR pd.products_description LIKE ('%bugtasche%') OR pd.products_short_description LIKE ('%bugtasche%') OR pd.products_name LIKE ('%bugtasche%') OR pd.products_heading_title LIKE ('%bugtasche%') OR p.products_model LIKE ('%bugtasche%') OR p.products_ean LIKE ('%bugtasche%') OR p.products_manufacturers_model LIKE ('%bugtasche%') OR p.products_date_added LIKE ('%bugtasche%') OR p.products_startpage LIKE ('%bugtasche%')  )  ) GROUP BY p.products_id ORDER BY NULL
    06/01/2022 12:24:52 Backtrace #0 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions_mysqli.inc.php called at Line 238
    06/01/2022 12:24:52 Backtrace #1 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions.inc.php called at Line 94
    06/01/2022 12:24:52 Backtrace #2 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/extra/DEFAULT/listing_sql/99_advanced_search_result.php called at Line 164
    06/01/2022 12:24:52 Backtrace #3 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/modules/DEFAULT.php called at Line 364
    06/01/2022 12:24:52 Backtrace #4 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/advanced_search_result.php called at Line 70
    06/01/2022 12:24:52 QUERY [46.75434s] UPDATE specials
                         SET STATUS = '0',
                             date_status_change = now()
                       WHERE expires_date <= now()
                         AND expires_date > 0
    06/01/2022 12:24:52 Backtrace #0 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions_mysqli.inc.php called at Line 238
    06/01/2022 12:24:52 Backtrace #1 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/xtc_expire_specials.inc.php called at Line 22
    06/01/2022 12:24:52 Backtrace #2 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/application_top.php called at Line 315
    06/01/2022 12:24:52 Backtrace #3 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/INDEX.php called at Line 25
    06/01/2022 12:24:52 QUERY [42.71934s] UPDATE specials
                         SET STATUS = '0',
                             date_status_change = now()
                       WHERE expires_date <= now()
                         AND expires_date > 0
    06/01/2022 12:24:52 Backtrace #0 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions_mysqli.inc.php called at Line 238
    06/01/2022 12:24:52 Backtrace #1 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/xtc_expire_specials.inc.php called at Line 22
    06/01/2022 12:24:52 Backtrace #2 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/application_top.php called at Line 315
    06/01/2022 12:24:52 Backtrace #3 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/product_info.php called at Line 25
    06/01/2022 12:24:52 QUERY [37.80930s] UPDATE specials
                         SET STATUS = '0',
                             date_status_change = now()
                       WHERE expires_date <= now()
                         AND expires_date > 0
    06/01/2022 12:24:52 Backtrace #0 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions_mysqli.inc.php called at Line 238
    06/01/2022 12:24:52 Backtrace #1 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/xtc_expire_specials.inc.php called at Line 22
    06/01/2022 12:24:52 Backtrace #2 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/application_top.php called at Line 315
    06/01/2022 12:24:52 Backtrace #3 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/INDEX.php called at Line 25
    06/01/2022 12:24:52 QUERY [34.01935s] UPDATE specials
                         SET STATUS = '0',
                             date_status_change = now()
                       WHERE expires_date <= now()
                         AND expires_date > 0
    06/01/2022 12:24:52 Backtrace #0 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions_mysqli.inc.php called at Line 238
    06/01/2022 12:24:52 Backtrace #1 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/xtc_expire_specials.inc.php called at Line 22
    06/01/2022 12:24:52 Backtrace #2 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/application_top.php called at Line 315
    06/01/2022 12:24:52 Backtrace #3 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/product_info.php called at Line 25
    06/01/2022 12:24:52 QUERY [32.80998s] UPDATE specials
                         SET STATUS = '0',
                             date_status_change = now()
                       WHERE expires_date <= now()
                         AND expires_date > 0
    06/01/2022 12:24:52 Backtrace #0 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions_mysqli.inc.php called at Line 238
    06/01/2022 12:24:52 Backtrace #1 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/xtc_expire_specials.inc.php called at Line 22
    06/01/2022 12:24:52 Backtrace #2 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/application_top.php called at Line 315
    06/01/2022 12:24:52 Backtrace #3 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/checkout_shipping.php called at Line 29
    06/01/2022 12:24:52 QUERY [30.76296s] UPDATE specials
                         SET STATUS = '0',
                             date_status_change = now()
                       WHERE expires_date <= now()
                         AND expires_date > 0
    06/01/2022 12:24:52 Backtrace #0 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions_mysqli.inc.php called at Line 238
    06/01/2022 12:24:52 Backtrace #1 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/xtc_expire_specials.inc.php called at Line 22
    06/01/2022 12:24:52 Backtrace #2 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/application_top.php called at Line 315
    06/01/2022 12:24:52 Backtrace #3 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/product_reviews_write.php called at Line 19
    06/01/2022 12:24:52 QUERY [24.71762s] UPDATE specials
                         SET STATUS = '0',
                             date_status_change = now()
                       WHERE expires_date <= now()
                         AND expires_date > 0
    06/01/2022 12:24:52 Backtrace #0 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions_mysqli.inc.php called at Line 238
    06/01/2022 12:24:52 Backtrace #1 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/xtc_expire_specials.inc.php called at Line 22
    06/01/2022 12:24:52 Backtrace #2 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/application_top.php called at Line 315
    06/01/2022 12:24:52 Backtrace #3 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/product_info.php called at Line 25
    06/01/2022 12:24:52 QUERY [24.36043s] UPDATE specials
                         SET STATUS = '0',
                             date_status_change = now()
                       WHERE expires_date <= now()
                         AND expires_date > 0
    06/01/2022 12:24:52 Backtrace #0 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions_mysqli.inc.php called at Line 238
    06/01/2022 12:24:52 Backtrace #1 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/xtc_expire_specials.inc.php called at Line 22
    06/01/2022 12:24:52 Backtrace #2 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/application_top.php called at Line 315
    06/01/2022 12:24:52 Backtrace #3 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/INDEX.php called at Line 25
    06/01/2022 12:24:52 QUERY [22.06127s] UPDATE specials
                         SET STATUS = '0',
                             date_status_change = now()
                       WHERE expires_date <= now()
                         AND expires_date > 0
    06/01/2022 12:24:52 Backtrace #0 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions_mysqli.inc.php called at Line 238
    06/01/2022 12:24:52 Backtrace #1 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/xtc_expire_specials.inc.php called at Line 22
    06/01/2022 12:24:52 Backtrace #2 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/application_top.php called at Line 315
    06/01/2022 12:24:52 Backtrace #3 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/INDEX.php called at Line 25
    06/01/2022 12:24:52 QUERY [21.59871s] UPDATE specials
                         SET STATUS = '0',
                             date_status_change = now()
                       WHERE expires_date <= now()
                         AND expires_date > 0
    06/01/2022 12:24:52 Backtrace #0 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions_mysqli.inc.php called at Line 238
    06/01/2022 12:24:52 Backtrace #1 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/xtc_expire_specials.inc.php called at Line 22
    06/01/2022 12:24:52 Backtrace #2 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/application_top.php called at Line 315
    06/01/2022 12:24:52 Backtrace #3 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/INDEX.php called at Line 25
    06/01/2022 12:24:52 QUERY [15.87619s] UPDATE specials
                         SET STATUS = '0',
                             date_status_change = now()
                       WHERE expires_date <= now()
                         AND expires_date > 0
    06/01/2022 12:24:52 Backtrace #0 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions_mysqli.inc.php called at Line 238
    06/01/2022 12:24:52 Backtrace #1 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/xtc_expire_specials.inc.php called at Line 22
    06/01/2022 12:24:52 Backtrace #2 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/application_top.php called at Line 315
    06/01/2022 12:24:52 Backtrace #3 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/checkout_shipping.php called at Line 29
    06/01/2022 12:24:52 QUERY [13.08496s] UPDATE specials
                         SET STATUS = '0',
                             date_status_change = now()
                       WHERE expires_date <= now()
                         AND expires_date > 0
    06/01/2022 12:24:52 Backtrace #0 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/db_functions_mysqli.inc.php called at Line 238
    06/01/2022 12:24:52 Backtrace #1 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/inc/xtc_expire_specials.inc.php called at Line 22
    06/01/2022 12:24:52 Backtrace #2 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/includes/application_top.php called at Line 315
    06/01/2022 12:24:52 Backtrace #3 - /www/htdocs/w009cf9a/2016.bootsbedarf-nord.de/INDEX.php called at Line 25

    Grüße
    Peter
    4 Antworten
    3265 Aufrufe
    08. Januar 2014, 20:25:57 von Teichbau
    14 Antworten
    10441 Aufrufe
    02. Dezember 2013, 18:13:01 von noRiddle (revilonetz)