Nach der Aktualisierung von WordPress und einigen Plugins in einem Kampf-Onlineshop (Themenbereich – Verkauf von Autoteilen, ca. 8–12.000 SKU, 300–600 Bestellungen/Tag, Spitzen bis zu 30 Bestellungen/Minute) traten kritische Fehler bei der Bestell- und Zahlungsabwicklung auf. Ausgangssituation und Umfeld - WordPress 6.5.x, WooCommerce 8.x - PHP 8.2, Nginx + PHP-FPM, MariaDB 10.6 – Redis-Objektcache, Cloudflare, WP-Cron deaktiviert – System-Cron wird verwendet - Zahlungen: Stripe und Local Acquiring über ein separates Plugin (Webhook + Callback) - Lieferung: benutzerdefiniertes Tarifberechnungsmodul + Integration mit externer API (Spitzenzeitüberschreitungen) - Es gibt ein selbst geschriebenes Must-Use-Plugin, das zusätzliche Bestellfelder hinzufügt und Status über REST mit 1C synchronisiert Symptome - Manchmal entstehen bei der Zahlung mit Karte doppelte Bestellungen – eine im Bearbeitungsstatus, die zweite in der Warteschleife – Stripe-Webhooks ändern den Bestellstatus in regelmäßigen Abständen nicht, obwohl das Ereignis an Stripe übermittelt wurde - Bei Spitzenlasten sehen einige Benutzer 500 bei /checkout/ und die Protokolle enthalten schwerwiegende Fehler und Deadlocks/Sperrwartezeitüberschreitungen beim Aufzeichnen einer Bestellung - Im WooCommerce-Administrator wird die Bestellkarte manchmal nicht geöffnet – ein weißer Bildschirm aufgrund eines JS-Fehlers auf der Bearbeitungsseite Was zu tun - Reproduzieren Sie Probleme beim Staging, sammeln Sie Spuren, identifizieren Sie Grundursachen und beheben Sie sie, ohne wichtige Integrationen zu deaktivieren - Beheben Sie WooCommerce-Versions-/Hooks-Konflikte mit benutzerdefinierten Plugins und Zahlungsmodulen und vermeiden Sie die doppelte Verarbeitung von Zahlungs- und Rennereignissen beim Erstellen einer Bestellung - Korrigieren Sie die Webhooks/Callback-Verarbeitung, sodass Bestellstatus und Metadaten genau einmal aktualisiert werden, selbst bei erneuten Zustellungsereignissen und Netzwerkwiederholungsversuchen - Beseitigen Sie 500 Fehler beim Bezahlen, einschließlich Problemen mit Zeitüberschreitungen bei der externen Liefer-API und Blockierungen in der Datenbank - Behebung des JS-Fehlers auf der Bestellseite im Admin-Panel (Skript-/Abhängigkeitskonflikt nach dem Update), ohne dass benutzerdefinierte Metaboxen beschädigt werden Einschränkungen - Die Arbeit wird mit minimalen Änderungen am Theme durchgeführt – alle Änderungen erfolgen über ein untergeordnetes Theme und/oder ein separates Plugin, ohne den WooCommerce/WordPress-Kern zu bearbeiten – Sie können Redis, Cloudflare und System-Cron nicht in der Produktion deaktivieren – überprüfen Sie dies nur durch Staging und sorgfältige Veröffentlichung - Zugriffe: Staging + schreibgeschützter Zugriff auf Produktionsprotokolle, Änderungen in der Produktion über PR in Git und Bereitstellung über eine bestehende Pipeline Erwartetes Ergebnis - Korrekturen in Form von Commits/PR mit einer klaren Beschreibung der Gründe und Lösungen - Eine Reihe von Diagnoseprotokollen/Metriken (innerhalb der verfügbaren WP/Woo-Tools) zur Überwachung wiederholter Fehler - Kurze Anweisungen, was überwacht werden muss und wie ein Rollback sicher durchgeführt werden kann Akzeptanzkriterien (messbar) 1) Während 48 Stunden Testbetrieb auf Staging während eines Lastlaufs entstehen keine Doppelbestellungen – 0 Duplikate pro 1000 Testzahlungen 2) Stripe-Webhook/Callback ist idempotent – die wiederholte Zustellung desselben Ereignisses ändert die Reihenfolge nicht mehr als einmal und erstellt keine neue 3) Bei einem Lasttest beim Checkout (mindestens 20 rps für 30 Minuten) beträgt der Anteil von 5xx nicht mehr als 0,2 %, die durchschnittliche TTFB einer Checkout-Seite beträgt beim Staging bis zu 800 ms 4) Der Verwaltungsfehler von WooCommerce Orders, der den weißen Bildschirm verursachte, wurde behoben – die Bestellkarte wird geöffnet und ohne JS-Fehler in der Konsole gespeichert Zusätzlich - Ich werde Nginx/PHP-FPM-Protokolle, WooCommerce-Protokolle, Zugriff auf das Git-Repository, eine Liste der letzten Updates und 3-5 Beispiele für problematische Bestellungen/Zahlungen bereitstellen.