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
Ich möchte den Bestand der Verpackungskartons im System verwalten und nachverfolgen JTL-Wawi 1.10 2
Neu Feature Requests für das News System Refactoring JTL-Shop - Ideen, Lob und Kritik 7
letzter EK bei der Lagerbewertung JTL-Wawi 1.10 2
Steuer Einstellung bei Sonderpreis und nach OSS Landauswahl JTL-Wawi 1.10 0
Neu JTL-Shop 5.2.3 – Google-Shoppin-Plugin 2.3.0: Mehrere Rückgaberichtlinien (DE + Ausland) bei einem Feed / return_policy_label Plugins für JTL-Shop 0
Neu eBay Angebotsimport : Fehler bei der Kommunikation mit dem eA-Server eBay-Anbindung - Fehler und Bugs 0
Neu Fehlerhafte bzw, leere Labels bei DHL & DPD JTL-ShippingLabels - Fehler und Bugs 1
1.11.5 Weiterhin Absturz bei Aufruf des Zahlungsmoduls JTL-Wawi 1.11 6
Neu Sendungsnummern per Mail versenden bei mehreren Paketen User helfen Usern - Fragen zu JTL-Wawi 5
Neu Sendungsnummer bei Auslieferung an Shopify senden Shopify-Connector 3
Nummernkreis bei gesplitteten Aufträgen "#" Symbol in "-" ändern JTL-Wawi 1.10 1
Monatsabschluss Amazon FBA UK / CH mit JTL2Datev WaWi 1.10 bei IDU Nutzung und Zwangs VCS für GB / Schweiz JTL-Wawi 1.10 0
Probleme Fehlermeldung bei Zahlungsabgleich JTL-Wawi 1.10 10
Neu Workflow bei Zahlungseingang User helfen Usern - Fragen zu JTL-Wawi 1
Textvorlage bei "Nachricht an Kunde" per email nicht mehr möglich JTL-Wawi 1.11 2
Bei Beschaffung wird keine Positionsnummer bei den Artikeln angezeigt JTL-Wawi 1.10 1
Fehler seit Version 1.10.15 bei Artikel Auslieferung über Bestandsmenge JTL-Wawi 1.10 0
Neu Texteditor bei Beitragserstellung fehlt JTL-Shop - Fehler und Bugs 1
Neu Bei Klick auf Warenkorb Button nicht direkt Warenkorb Templates für JTL-Shop 8
Neu Frage zum Thema Skonto bei Bezahlungsarten Barzahlung und QR-Code Betrieb / Pflege von JTL-Shop 0
Neu Steuerart bei Auftragsimport via Ameise falsch JTL-Wawi - Fehler und Bugs 1
Neu Ärger mit CountX: Verzögerung bei der Bearbeitung von VCS-Daten in WAWI führt zu unvollständigen Steuerdaten User helfen Usern - Fragen zu JTL-Wawi 0
Neu Unterstützung bei JTL FFN Retouren – Fehler in der API-Übertragung von Returnless Starten mit JTL: Projektabwicklung & Migration 0
Neu Landingpage bei nur 1 Artikel in einer Kategorie Betrieb / Pflege von JTL-Shop 1
Neu Amazon Lister 2.0 Kategoriespezifische Felder fehlen bei vielen Kategorien Amazon-Lister - Fehler und Bugs 2
Neu Artikeldarstellung / bei nicht Verfügbarkeit / bestellbar Anhand Verfügbarkeitszeit Allgemeine Fragen zu JTL-Shop 1
Neu GELÖST! Amazon "Aufzuschaltende Angebote" seit Tagen in "wird gesendet" bei WAWI 1.11.3 Amazon-Anbindung - Fehler und Bugs 10
Neu Fehlermeldung 'quantity' bei Vaterartikel Amazon-Lister - Fehler und Bugs 1
Neu Probleme bei der Umstellung von Varkombi auf Konfigurationsartikel User helfen Usern - Fragen zu JTL-Wawi 0
Am eigenen Lager Bestand = 0, bei FBA = 170, Probleme mit dem eigenen Shop und Otto.de JTL-Wawi 1.10 3
Neu JOBS bei CIN com-insnetz Berlin Dienstleistung, Jobs und Ähnliches 0
Neu Probleme bei WooCommerce JTL-Connector, keine Aktivierung möglich, Bestands-Shop lahmgelegt Onlineshop-Anbindung 0
Neu Pickliste Hinweis anzeigen nur bei bestimmten Verkaufkanal User helfen Usern - Fragen zu JTL-Wawi 0
Änderung E-Mailadresse bei Mahnungen JTL-Wawi 1.9 7
Ticket erstellen bei einer Fehlermeldung mit JTL-Start ??? JTL-Wawi 1.9 6
Neu Packtisch + Waage – Meldung bei großem Unterschied zwischen tatsächlichem Gewicht und Systemgewicht? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Massenänderung "Lagerplatz" für Artikel bei WMS Lager JTL-Wawi 1.10 2
Sammelbuchung bei Zahlungsausgang über das Zahlungsmodul JTL-Wawi 1.10 0
Neu Fehlermeldung bei Rechnungserstellung Arbeitsabläufe in JTL-Wawi 0
Neu Paypal bei bestimmten Produkten nicht anbieten Plugins für JTL-Shop 1
Neu Amazon Bestellungen werden nicht abgerufen - Fehler bei Account 'XXX' []: Ihr Account ist nicht aktiv. Amazon-Anbindung - Fehler und Bugs 5
EBICS einrichten bei Commerzbank JTL-Wawi 1.10 1
Neu Artikel mit gleichem Namen werden bei Shopify zu einem Artikel Shopify-Connector 2
Neu Keine Zahlung erforderlich bei < 1€ JTL-Shop - Fehler und Bugs 1
Neu PayPal-Plugin blockiert bei PayPal-Störung Checkout JTL-Shop - Fehler und Bugs 4
In Diskussion Etikett mit Warnung bei Versand drucken JTL-Workflows - Ideen, Lob und Kritik 10
Neu Falsche Umsatzsteuer bei Paypal-Checkout Bestellungen im Webshop JTL-Shop - Fehler und Bugs 3
1.11 mit 2 Mandanten - Dashboard bei Advanced Wawi zerschossen - JTL Start funktioniert JTL-Wawi 1.11 1
Neu Zeit bei Mahnungen Nachträglich ändern Arbeitsabläufe in JTL-Wawi 0
Neu DATEV Rechnungsdatenservice 2.0 Fehlermeldung bei der Übertragung Schnittstellen Import / Export 5

Ähnliche Themen