Wir haben einen Prozess, der eine SQL-Lite-Datenbank mit ein paar Tabellen mit etwa 750k Datensätze/100 MB erstellen muss. Es wird an anderer Stelle hochgeladen (Azure Storage Blob). Ich weiß, dass die Azure-App sehr langsame Platten-I/O hat und wenn es lokal ausgeführt wird, dauert es ein paar Sekunden, es kommt immer zu einer Zeitüberschreitung bei Azure. Ich habe versucht, die WEBSITE_LOCAL_CACHE_OPTION
auf always
und die Verwendung des Temp-Ordners, aber das hat nicht geholfen.SQL Lite auf Azure App Service - Fügt langsam und Timeout
Ich untersuchte die Verwendung einer sql lite in der Speicherdatenbank, aber es scheint keine Möglichkeit zu geben, das Dateisystem zu umgehen, wenn ich das in ein Bytearray (oder Stream) konvertieren möchte, das in einer azure App langsam ist. Idealerweise sollte der Zugriff auf die In-Memory-Datenbank, um in ein Blog zu streamen, optimal sein.
Gibt es in sql lite oder im azure app service Verbesserungen, die es ermöglichen würden, diese in einer angemessenen Zeit zu beenden?
Verwendung der Ormlite des Service-Stacks. Hier ein Beispiel:
using (var trans = dba.OpenTransaction(System.Data.IsolationLevel.ReadUncommitted))
{
dbLite.InsertAll(locs);
foreach (var s in sales)
{
dbLite.Insert<Sales>(s);
}
trans.Commit();
}
Interessant genug habe ich die Zeit nach unten aus nie arbeiten (10 Minuten hat es geschrieben 5mb, damit ich weiß, es wird nie fertig) auf 4-5 Minuten mit
dbLite.ExecuteSql("pragma page_size = 8192");
dbLite.ExecuteSql("pragma synchronous = OFF");
dbLite.ExecuteSql("PRAGMA journal_mode = OFF");
Dies wird lokal mit 1 Sekunde verglichen. Der auf "Aus" eingestellte Synchronmodus scheint in meinem Szenario am besten zu helfen.
Was die App Serviceplan/Preisstufe für Ihre azur Website? Wo haben Sie die Verarbeitung über das Erstellen einer SQLite-Datenbank und Einfügen von etwa 750k Datensätze/100 MB, eine Anfrage unter Web-Anwendung oder Webjobs ausgeführt? –
Wie viel Zeit kostet es auf azur und was ist die detaillierte Fehlerverfolgung? Für den azure-App-Service gibt es eine Zeitüberschreitung von 230 Sekunden für die Anforderung. Sie können auf dieses [Problem] verweisen (https://stackoverflow.com/questions/38673318/azure-asp-net-webapp-the-request-timed-out)). Darüber hinaus können Sie 'dbLite.InsertAll (sales)' verwenden, anstatt über 'sales' zu iterieren und Verkaufsdaten für eine bessere Leistung einzugeben. –
Ich habe versucht alle/etc. Die Langsamkeit ist auf die langsame Festplatte zurückzuführen, da ich eine Konsole öffnen kann und die Dateien langsam zunehmen sehen. Ich endete mit Hang-Feuer und einem Hintergrund-Thread. Es dauert 4-6 Minuten mit synchron und Journal-Set auf aus und ist 75mb nicht gezippt. – lucuma