Vor einigen Tagen habe ich ein System für automatische Vervollständigungsvorschläge implementiert, das je nach Sprache mit einem Wörterbuch funktioniert. Und so funktioniert es: JQuery UI Autocomplete -> Aufruf an .php Datei -> Aufruf an VB6 COM DLL Funktion -> Aufruf an .sqlite Datei und Finden von Ergebnissen basierend auf getippten Buchstaben -> Ergebnisse an php zurückgeben -> Ergebnisse zurücksenden an JS.sqlite & windows: Nicht genügend Speicher ist verfügbar, um diesen Vorgang abzuschließen und CoInitialize wurde nicht aufgerufen
Es funktioniert ziemlich schnell, wie in es dauert durchschnittlich ~ 7 (Millisekunden), um jeden Vorgang abzuschließen. Während der Spitzenzeiten zeigt Google Analytics ~ 1200 Online-Benutzer an, und im Allgemeinen erhalten wir jeden Tag ~ half a million
Anrufe zu dieser speziellen Funktion.
Von dem Tag an diesem zum automatischen Vervollständigung Vorschlag System online ging begann ich Hunderte von zwei sehr spezifischen Fehlermeldungen zu bemerken:
Not enough storage is available to complete this operation.
CoInitialize has not been called.
Einige Informationen, die helfen können:
a) Diese Meldungen erscheinen, meist während der Spitze Besucher horus
b) Sie erscheinen nicht immer nur mit der spezifischen Funktion, aber auch auf anderen (ABER nie zuvor, bevor wir das oben genannte System implementiert haben)
obwohlc) verwendete ich SQLite-Datenbanken, bevor sie für andere Sachen (nicht so viel „Echtzeit“, wie in welche Ergebnisse, wenn ein Benutzer), aber nie ein solches Problem
erschiend) Die Größe des SQLite Datei ist ~ 350 MB mit 3 Tabellen, einer von ihnen hat ~ 2,2 Millionen Einträge, der andere hat 1,6 Millionen und die anderen ~ 16.000 Einträge und alle notwendigen Spalten sind indiziert.
e) Offensichtlich ist diese Datenbank für schreibgeschützte Vorgänge
f) Sobald das System wird deaktiviert verwendet wird, stoppen alle Nachrichten.
g) bekomme ich etwa tausend solche Fehlermeldungen pro Tag für jede Nachricht (mit über 500.000 Anrufen an die Funktion/Tag)
Das Serversystem ist zwei (x2) Boxen: Core i7 4770 bei 3, 8GHZ, 32 GB RAM, Windows Server 2012 und IIS.
Die Nachrichten erscheinen zufällig und nur während der Stoßzeiten. Ich kann das Problem nicht auf dem Entwicklungscomputer replizieren. Die Suche im Internet war bis jetzt fruchtlos. Irgendwelche Ideen über das, was es verursacht und wie man es löst, wären mehr als willkommen.
Vielen Dank.
Muss ich fragen, warum gibt es eine vb6 com Komponente in der Mitte? PHP kann direkt mit SQLite chatten. –
Weil so alles Wörterbuch angefangen hat, alle Operationen in der vb6 com dll passieren, gibt es Dinge, die viel Zeit brauchen, um php zu portieren (was wahrscheinlich etwas langsamer wäre). Re-Implementieren dieser speziellen Funktion in PHP wäre mein letzter Ausweg – MIrrorMirror
Für Ihre sqlite Datenbankverbindung, welche cache_size und page_size Werte verwendet werden? –