Gelöst System.OutOfMemoryException bei products.pull

DonFurio

Aktives Mitglied
14. Juni 2015
10
0
Guten Tag,

seit neuerdings lässt sich kein kompletter Shopabgleich mehr durchführen, weil beim pull bestimmter Artikel eine System.OutOfMemoryException auftritt. Über unser System:

Windows 7 in VMware unter Ubuntu 14.04
24GB verfügbarer RAM und über 100GB freier Festplattenspeicher
Microsoft SQL Server 2014
Wawi Version: 1.1.4.13
JTLConnector: v1.6 (UTF8-Konvertierung aktiv)
PHP Version: PHP Version 5.4.45
Artikelbestand Webshop: ~147.000 Artikel im Shop

Die Fehlermeldung ist nicht immer exakt die selbe aber scheint mit dem Speichern von Attributen zusammenzuhängen. Hier was bisher kam:

Code:
Fehler:
Artikel-Empfangen-Fehler: Bitte beachten Sie, dass zur Fehler-Diagnose ebenfalls die Log-Datei des Servers und das Abgleich-Log der Wawi notwendig sind!
Eine Ausnahme vom Typ "System.OutOfMemoryException" wurde ausgelöst.
Ein Aufrufziel hat einen Ausnahmefehler verursacht.
   bei System.Linq.Enumerable.OfTypeIterator[TResult](IEnumerable source)
   bei System.Linq.Enumerable.OfType[TResult](IEnumerable source)
   bei jtlDatabase.Attributes.VirtualMemberAttribute.TryGetValue(AttributeCollection oAttributeCollection, VirtualMemberAttribute& oAttribute)
   bei jtlDatabase.jtlObjectTable.AddVirtualPropertyMembers()
   bei jtlDatabase.jtlObjectTable..ctor()
   bei jtlDatabase.classes.jtlDBClasses.jtlArtikelattributBase..ctor()
   bei jtlDatabase.classes.jtlDBClasses.jtlArtikelattribut..ctor()
   bei System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)

Code:
Fehler:
Artikel-Empfangen-Fehler: Bitte beachten Sie, dass zur Fehler-Diagnose ebenfalls die Log-Datei des Servers und das Abgleich-Log der Wawi notwendig sind!
Eine Ausnahme vom Typ "System.OutOfMemoryException" wurde ausgelöst.
   bei System.Reflection.CustomAttribute._GetPropertyOrFieldData(RuntimeModule pModule, Byte** ppBlobStart, Byte* pBlobEnd, String& name, Boolean& bIsProperty, RuntimeType& type, Object& value)
   bei System.Reflection.CustomAttribute.GetPropertyOrFieldData(RuntimeModule module, IntPtr& blobStart, IntPtr blobEnd, String& name, Boolean& isProperty, RuntimeType& type, Object& value)
   bei System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent)
   bei System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)
   bei System.RuntimeType.GetCustomAttributes(Type attributeType, Boolean inherit)
   bei System.Attribute.InternalGetAttributeUsage(Type type)
   bei System.Attribute.CopyToArrayList(List`1 attributeList, Attribute[] attributes, Dictionary`2 types)
   bei System.Attribute.InternalGetCustomAttributes(PropertyInfo element, Type type, Boolean inherit)
   bei System.Attribute.GetCustomAttributes(MemberInfo element, Type type, Boolean inherit)
   bei System.Attribute.GetCustomAttribute(MemberInfo element, Type attributeType, Boolean inherit)
   bei System.Reflection.CustomAttributeExtensions.GetCustomAttribute[T](MemberInfo element)
   bei jtlDatabase.jtlMemberProperty.IHBF1IT47Jy()
   bei jtlDatabase.jtlMemberProperty.get_Attribute()
   bei jtlDatabase.jtlMemberProperty.get_IsObfuscated()
   bei jtlDatabase.jtlObjectRepository.vmnFeyWEOnY(jtlObject , IPropertyInfo , Object )
   bei jtlDatabase.jtlObjectRepository.FillBy(jtlObject item, DataTable dataTable, Int32 rowNumber, MissingPropertiesMode missingPropertiesMode)
   bei jtlDatabase.jtlObjectList`1.appendListFromDB(String sqlQuery, MissingPropertiesMode handleMissingProperties, jtlDBParameter[] oDBParameter_arr)
   bei jtlDatabase.jtlObjectList`1.fillListFromDB(String cSQL, MissingPropertiesMode handleMissingProperties, jtlDBParameter[] oDBParameter_arr)
   bei jtlDatabase.jtlDatabaseTable`1.fill()
   bei jtlDatabase.classes.jtlDBClasses.jtlArtikelattributList.FindAll()
   bei jtlDatabase.classes.ConnectorClasses.SaveClasses.AttributeSaver..ctor()
   bei jtlDatabase.classes.ConnectorClasses.ProductSaver.GoUngWPBDt(IEnumerable`1 attributes, jtlArtikel )
   bei jtlDatabase.classes.ConnectorClasses.ProductSaver.Save(List`1 products, List`1& exceptions)
   bei jtlDatabase.classes.ConnectorClasses.Saver.Save(IEnumerable`1 items, jtlShop shop, List`1& exceptions)
   bei jtlCore.ControllerClasses.Connector.Abgleich.Funktionen.ConnectorPuller.Pull[TEntity](Int64 quantity)

Code:
Fehler:
Artikel-Empfangen-Fehler: Bitte beachten Sie, dass zur Fehler-Diagnose ebenfalls die Log-Datei des Servers und das Abgleich-Log der Wawi notwendig sind!
Eine Ausnahme vom Typ "System.OutOfMemoryException" wurde ausgelöst.
   bei System.Collections.Generic.Dictionary`2.Initialize(Int32 capacity)
   bei System.Collections.Generic.Dictionary`2..ctor(Int32 capacity, IEqualityComparer`1 comparer)
   bei System.Attribute.InternalGetCustomAttributes(PropertyInfo element, Type type, Boolean inherit)
   bei System.Attribute.GetCustomAttributes(MemberInfo element, Type type, Boolean inherit)
   bei System.Attribute.GetCustomAttribute(MemberInfo element, Type attributeType, Boolean inherit)
   bei System.Reflection.CustomAttributeExtensions.GetCustomAttribute[T](MemberInfo element)
   bei jtlDatabase.jtlMemberProperty.rVhcxxEcDEc()
   bei jtlDatabase.jtlMemberProperty.get_Attribute()
   bei jtlDatabase.jtlMemberProperty.get_IsObfuscated()
   bei jtlDatabase.jtlObjectRepository.TFqc2UgpHVj(jtlObject , IPropertyInfo , Object )
   bei jtlDatabase.jtlObjectRepository.FillBy(jtlObject item, DataTable dataTable, Int32 rowNumber, MissingPropertiesMode missingPropertiesMode)
   bei jtlDatabase.jtlObjectList`1.appendListFromDB(String sqlQuery, MissingPropertiesMode handleMissingProperties, jtlDBParameter[] oDBParameter_arr)
   bei jtlDatabase.jtlObjectList`1.fillListFromDB(String cSQL, MissingPropertiesMode handleMissingProperties, jtlDBParameter[] oDBParameter_arr)
   bei jtlDatabase.jtlDatabaseTable`1.fill()
   bei jtlDatabase.classes.jtlDBClasses.jtlArtikelattributList.FindAll()
   bei jtlDatabase.classes.ConnectorClasses.SaveClasses.AttributeSaver..ctor()
   bei jtlDatabase.classes.ConnectorClasses.ProductSaver.D2BAfojeoQ(IEnumerable`1 attributes, jtlArtikel )
   bei jtlDatabase.classes.ConnectorClasses.ProductSaver.Save(List`1 products, List`1& exceptions)
   bei jtlDatabase.classes.ConnectorClasses.Saver.Save(IEnumerable`1 items, jtlShop shop, List`1& exceptions)
   bei jtlCore.ControllerClasses.Connector.Abgleich.Funktionen.ConnectorPuller.Pull[TEntity](Int64 quantity)

+ weitere wegen dem Zeichenlimit in der exception.txt

Auffällig ist bisher, dass die Fehlermeldung immer dann auftritt, wenn ein bisher nicht verbundener Artikel aus dem Shop geladen wird, der bereits in Wawi vorhanden ist. Es kommt also auch immer:

Code:
Warnungen:
Artikelnummer '8699077NK' ist bereits vorhanden. Der Wawi-Artikel wird aktualisiert.

Außerdem tritt der Fehler immer nur bei einzelnen Artikeln auf. Sobald man diese aus dem Shop entfernt, läuft der Connector wieder eine Weile bis der Fehler bei irgendeinem Artikel erneut auftritt.

Im Anhang z.B. die Connector Antwort beim letzten Problemartikel.

Was wir bisher probiert haben:
  • Funktionen Datenbank bereinigen, reparieren und Performanceoptimierung in Wawi.
  • Beim Microsoft SQL Server den Maximalen Serverarbeitsspeicher verringert und "Lock pages in memory" aktiviert.
  • Weitere SQL Server Diagnose bei der wir aber nur feststellen konnten, dass einige ebay Artikel queries der Wawi eine recht starke Auslastung erzeugen.
  • Die Paketgrößen Einstellungen in der Connector Konfiguration auf 1 begrenzt und die Bilder auf 10MB/Paket
  • Überprüfen von Einstellungen für vmware
  • Fehlerüberprüfung bei arbeitsspeicher und festplatten

Was können wir noch versuchen? Woran könnte der Fehler liegen? Ich bin langsam mit meinem Latein am Ende.

Vielen Dank.
 

Anhänge

  • result.txt
    10,8 KB · Aufrufe: 3
  • exception.txt
    7,1 KB · Aufrufe: 2

DonFurio

Aktives Mitglied
14. Juni 2015
10
0
Hallo zusammen.

Das Problem sind anscheinend die Artikelattribute. Bei unserem Artikeln sind standardmäßig 4 Attribute gesetzt gewesen FSK 18, Aktiv, Optionen Vorlage und Produkt Vorlage. Dabei wurden meistens sowohl die Attribute global als auch shopspezifisch gesetzt. Bei weiteren 60000 eBay Artikeln kamen wir dann insgesamt auf ca. 1,35 Mio Attribute. Den Fehlern nach zu urteilen werden diese Attribute alle intern in einer Liste gesammelt, wodurch Wawi dann die 2GB Begrenzung für diese erreicht und es zum System.OutOfMemory kommt.
Wir haben jetzt die Attribute für die Vorlagen entfernt aber eine endgültige Lösung scheint dies für mich nicht darzustellen?

Beste Grüße
 

daniel.jtl

Moderator
12. März 2014
1.277
28
Abgesehen davon dass eine Paketgröße von 1 absolut nicht zielführend ist (dadurch nämlich dann logischerweise für jeden einzelnen Datensatz eine separate Server-Anfrage), kann es dann aber nicht sein dass hier zu viele Attribute gesendet werden.
Die Attribute hängen ausschließlich am Artikel, so dass in dem Fall auch nur die übertragen werden, die aktuell diesem Artikel zugeordnet sind.
"Globale" Attribute gibt es beim Connector nicht.
Wenn hier pro Artikel also mehr als die 4 genannten Attribute kommen, sollte man zunächst mal die Shop-Tabellen auf Fehler und/oder Duplikate prüfen.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu System für Ebay Artikelmerkmale - warum ist das so wichtig? User helfen Usern - Fragen zu JTL-Wawi 0
Neu DHL 4.0 API Fehler - Could not cast or convert from System.Int64 JTL-ShippingLabels - Fehler und Bugs 7
Neu Überverkäufe vom System deaktiviert? User helfen Usern - Fragen zu JTL-Wawi 12
„Wer hat Lust auf einen Erfahrungsaustausch bei Kaffee und Kuchen?“ – aber diesmal ohne Shop-Themen? Starten mit JTL: Projektabwicklung & Migration 1
Neu Selektieren aller Artikel, bei denen NICHT 'Preis aus Registerkarte JTL Wawi" eingestellt ist? User helfen Usern - Fragen zu JTL-Wawi 1
"Wer hat Lust auf einen Erfahrungsaustausch bei Kaffee und Kuchen?". Starten mit JTL: Projektabwicklung & Migration 3
Neu JTL-POS DATEV-Export – Kassendifferenz nicht nur bei Mehrzweckgutscheinen JTL-POS - Fehler und Bugs 2
„Wer hat Lust auf einen Erfahrungsaustausch bei Kaffee und Kuchen?“. Starten mit JTL: Projektabwicklung & Migration 43
Neu JTL-POS DATEV-Export – Kassendifferenz bei Mehrzweckgutscheinen Allgemeine Fragen zu JTL-POS 0
Neu JTL POS Crasht bei Druckerauswahl JTL-POS - Fehler und Bugs 12
Neu POS Display crasht bei Kundeninteraktion JTL-POS - Fehler und Bugs 5
Neu Nutzlose Tabellenspalte bei Inventur innerhalb der Wawi User helfen Usern - Fragen zu JTL-Wawi 1
Buchungsdaten VCS Lite sind Offen und unbekannte Rechnungen bei Amazon JTL-Wawi 1.11 3
Neu JTL-Wawi 2.0.6: eBay-Rahmenbedingungen bei bestehenden Angeboten/Vorlagen nicht mehr änderbar eBay-Anbindung - Fehler und Bugs 11
Fehler bei Installation: Powershell V2 JTL-Wawi 2.0 8
Neu Shop rechnet Sa+So bei Lieferzeit mit ein Betrieb / Pflege von JTL-Shop 0
Ständiger Absturz bei Wawi 1.11.11 nach Artikelaktualisierung JTL-Wawi 1.11 1
Neu Abgleiche für zweiten Mandanten bei Worker-Neustart deaktiviert JTL-Wawi - Fehler und Bugs 0
Neu Identische Aufträge bei mehreren Fulfillment-Kunden sinnvoll trennen? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 4
Neu Versandetikett bei Aufträgen aus dem JTL Shop Arbeitsabläufe in JTL-Wawi 0
Neu Wawi 2.0.6 Fehler bei Druckerzuordnung und Nachdruck JTL-ShippingLabels - Fehler und Bugs 12
Neu Login-Fehler 403 bei app.shipping.jtl-cloud.com seit 17.07.2026 JTL-ShippingLabels - Fehler und Bugs 7
Neu Checkbox im Bestellvorgang bei Gebrauchtartikeln Allgemeine Fragen zu JTL-Shop 2
Neu ++ Menge bei laufenden Ebay Angeboten Arbeitsabläufe in JTL-Wawi 1
Neu Seit heute Morgen werden bei Amazon keine Rechnungen mehr hochgeladen Amazon-Anbindung - Fehler und Bugs 13
Neu Canonical-Tag bei Merkmalwert-URLs mit Parameter "m" Betrieb / Pflege von JTL-Shop 11
Neu Kind-Artikel nicht bei Ebay anbieten Allgemeine Fragen zu JTL-Shop 1
Neu Wie ändere ich das vorausgewählte Lager bei Bestellungen? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Fehlender Rabattabzug bei Amazon Multirabatten Amazon-Anbindung - Fehler und Bugs 0
In Diskussion Workflow bei fehlerhaften Bankabgleich JTL-Workflows - Ideen, Lob und Kritik 4
Gelöst: Störung bei LInk11 - JTL- Shops teilweise nicht erreichbar Störungsmeldungen 1
Neu JTL Wawi 1.11.11 - Zahlungsabgleich bei FYRST Bank verlangt immer Passwort User helfen Usern - Fragen zu JTL-Wawi 0
Kundengruppenrabatte werden bei einzelnen Artikeln nicht übernommen – „Rabatte ignorieren“ springt nach Speichern zurück JTL-Wawi 2.0 2
Neu [API] Zahlungen bei salesOrders verbuchen Schnittstellen Import / Export 0
Neu Unerwünschtes Scrollen/Springen zum Seitenanfang bei Footer-Menüs (Mobile) JTL-Shop - Fehler und Bugs 5
Frage stellen bei Bestellung JTL-Wawi 1.11 1
Bei Update auf 2.05 kam folgende Meldung JTL-Wawi 2.0 2
Neu Fehleretikett bei OTTO Bestellungen bzgl. Adresszusatz JTL-ShippingLabels - Fehler und Bugs 2
Skonto wird bei Zahlung setzen nicht berücksichtigt JTL-Wawi 1.11 2
Wawi 1.11.9 Ständige Abstürze bei Aktualisierung Artikelstammdaten JTL-Wawi 1.11 6
Neu Helfen Lösungen wie Unicorn wirklich, um die teuren Preise bei JTL zu vermeiden? Amazon-Anbindung - Ideen, Lob und Kritik 1
Neu Erstellung der Sitemap bei WaWi Abgleich funktioniert nicht Allgemeine Fragen zu JTL-Shop 0
Neu Bug? Führende Nullen bei Sendungsnummern verschwinden in JTL-Wawi 2.0.3 JTL-ShippingLabels - Fehler und Bugs 1
Neu Update nach 5.7.1 hängt bei Mirgation Installation / Updates von JTL-Shop 4
Wawi 1.11. Rechnungsanhang funktioniert nicht mehr bei Versandmail JTL-Wawi 1.11 6
Fehlermeldungen bei Einrichtung DHL 4.0 "Objektverweis" und "Konfiguration Versandart" JTL-Wawi 1.11 2
Error 500 bei Neuinstallation Einrichtung JTL-Shop5 7
Neu Amazon Versandentgelt Kaufen bei Standardbestellungen Amazon-Anbindung - Ideen, Lob und Kritik 0
Neu Hilfe bei jtl-pos Synchronisation User helfen Usern - Fragen zu JTL-Wawi 5
Neu Fragen zum SaaS-Connector / Shopware6 bei Lagerbestandskorrektur Shopware-Connector 0

Ähnliche Themen