PHP Fatal Error: Out Of Memory dank EntityWrittenContainerEvent

Nachdem ein Import-Script eines Kunden mit Out Of Memory (4GB Limit) stets nach ungefähr 1200 Iterationen abbricht, habe ich mal versucht das Problem zu lokalisieren.

Das Problem liegt im Symfony EventDispatcher, der bei jeder Iteration 2MB mehr Memory konsumiert.
Das macht er aber nur beim Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenContainerEvent. Bei anderen Events liegt der dauerhafte Memory-Konsum bei durchschnittlich 0,1 MB.

Hat jemand gleiche Probleme (gewiss, ggf. unwissend) oder hat sich diesem Thema schon einmal angenommen?

Das erklärt natürlich auch, wieso Importe generell Ewigkeiten dauern bzw. abbricht.

Ich habe mir die Listener im Detail angesehen…

Registered Listeners Grouped by Event
=====================================

"Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenContainerEvent" event
--------------------------------------------------------------------------------------

 ------- ------------------------------------------------------------------------------------------------------ ---------- 
  Order   Callable                                                                                               Priority  
 ------- ------------------------------------------------------------------------------------------------------ ---------- 
  #1      Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateSalutationRoute()         2016      
  #2      Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateCountryRoute()            2015      
  #3      Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateStreamIds()               2014      
  #4      Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateStreamsBeforeIndexing()   2013      
  #5      Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateSnippets()                2012      
  #6      Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateShippingMethodRoute()     2011      
  #7      Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateContext()                 2010      
  #8      Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateCrossSellingRoute()       2009      
  #9      Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidatePropertyFilters()         2008      
  #10     Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateManufacturerFilters()     2007      
  #11     Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateProductAssignment()       2006      
  #12     Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidatePaymentMethodRoute()      2005      
  #13     Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateNavigationRoute()         2004      
  #14     Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateLanguageRoute()           2003      
  #15     Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateCurrencyRoute()           2002      
  #16     Shopware\Core\Framework\Adapter\Cache\CacheInvalidationSubscriber::invalidateCmsPageIds()              2001      
  #17     Shopware\Storefront\Framework\Routing\CachedDomainLoaderInvalidator::invalidate()                      2000      
  #18     Shopware\Core\Framework\DataAbstractionLayer\Indexing\EntityIndexerRegistry::refresh()                 1000      
  #19     Shopware\Storefront\Framework\Seo\SeoUrlRoute\SeoUrlUpdateListener::detectSalesChannelEntryPoints()    0         
  #20     Shopware\Elasticsearch\Product\CustomFieldUpdater::onNewCustomFieldCreated()                           0         
 ------- ------------------------------------------------------------------------------------------------------ ----------

Irgendeiner dieser Subscriber (oder includierte Scripts) konsumiert pro Iteration knapp 2 MB Speicher.

Ich habe gesehen, dass für 6.5.0.0 teile des Codes umgeschrieben wurden. Ich bin mir aber nicht sicher in wie weit es dieses durchaus ernsthafte Problem adressiert.

Könnt ihr dazu etwas sagen? @marco.steinhaeuser

Puh, da fühle ich mich noch immer etwas nackt :slight_smile:
Schau mal, nach dem letzten Oktober ist hier vor vier Tagen etwas passiert, meinst Du diese Änderung? History for src/Core/Framework/DataAbstractionLayer/Event/EntityWrittenContainerEvent.php - shopware/platform · GitHub

Im Commit sehe ich im Wesentlichen nur zwei neue public functions: NEXT-20119 - Add product.written event when association deleted · shopware/platform@6479d7a · GitHub

Pack das doch ansonsten gern mal mit in den Issue-Tracker. Ich könnte mir vorstellen, das solche konkreten Hinweise sehr dankbar aufgenommen werden.