Hohe Last nach BAN REQUEST

Hallo,

wir haben in regelmäßigen Abständen Probleme mit einer hohen Last auf unserem Server, vielleicht könnt Ihr uns hefen der Ursache auf die Schliche zu kommen.

Server & Shopware

  • Intel Xeon Quad Core 2,6 GHz
  • 4 GB RAM
  • 2 x 500 GB SATA HDD (RAID1)
  • PHP 5.6.6
  • Server API CGI/FastCGI
  • Shopware 5.1.4
  • 30.000 Artikel

auf dem Server liegen noch 4 weitere Shopware Installation (5.2.3) die alle im Wartungsmodus sind und uns zu testzwecken dienen. (Haben alle so um die 30 Produkte)

Ablauf

In unregelmäßgen Abständen geht von jetzt auf gleich die Last auf dem Server hoch (Load Average > 120). Der Grund dafür ist wohl nicht verfügbarerer RAM und dementsprechend ordentlich SWAP. (95%). (Ein Speicherupgrade auf 16GB ist bereits beauftragt.) Sobald der Load und der Server anfängt zu swappen ist die Seite nicht mehr erreichbar, da die php-fcgi Prozesse nicht mehr abgearbeitet werden können. (Teilweise > 200 Prozesse). Es hilt dann nur noch ein Neustart des Apache.

Vermutung

in den http logs des Apache fällt zum Zeitpunkt des Crashs ein BAN Request auf, der von der eigenen IP abgesetzt wird. Soweit ich es verstanden habe setzt Shopware dieses Request ab um den Cache zu invalidieren. Genau zu diesem Zeitpunkt wurden dann auch Dateien in var/cache/production…/html/ geändert. Bzw trägt der html Ordner den Zeitpunkt der letzten Änderung.
Kann das zusammenhängen?

Hat jemand von Euch eine Idee?

Gruß Rob

 

 

 

Wie groß ist denn dein Cache-Ordner?
Wenn der sehr groß ist (10GB bspw.) dann ist das auch kein Wunder. Dann wird bei der invalidierung der komplette Ordner nach einer Cache-Datei durchsucht und diese invalidiert. Das verursacht natürlich einiges an Last. Du solltest immer schauen, dass der Cache regelmäßig per Cronjob geleert wird und nicht riesige Mengen an invalidierten Dateien da bleiben.

Hallo Moritz,

vielen Dank für Deine schnelle Antwort.

Der Cache Ordner ist aktuell 4,1 GB groß. Der HTTP Cache wird über das Cronjobplugin jede Nacht aktualisiert.
Was ist mit der Option der clear_cach.sh im cache Ordner? Sollten wir diese verwenden?