2017-04-12 5 views
1

Ich habe CEF4Delphi verwendet, um CEF/Chromium in meiner Delphi XE 10.1 Anwendung einzubetten. Ich bin derzeit bei CEF Version 3.2987.1597.gffc5773 (Chromium Version 57.0.2987.110), 32 Bit.CEF/Chrom Renderprozess CPU-Auslastung

Ich kann den Renderprozess im Windows Task Manager normalerweise bei 0% CPU Auslastung sehen, wenn Kunden nicht browsen, aber manchmal scheint der Renderprozess hängen zu bleiben und greift auf die CPU die er bekommen kann (100% von eine einzelne CPU, 16% von insgesamt, da ich 6 verfügbar habe), auch wenn der Benutzer nichts tut und das Browserfenster nicht sichtbar ist. Wenn es festsitzt, bleibt es hängen, bis ich den Prozess beendet habe, mehrere Stunden wurden beobachtet. Ich habe die ausführliche Protokollierung aktiviert, aber nichts wird protokolliert, solange der Benutzer nichts tut. Ich bekomme viel Protokollierung beim Start und wenn der Benutzer aktiv surft.

Irgendwelche Tipps zur Lösung? Ich sehe dieses Problem nur auf meinem Terminal Server und war nicht in der Lage, das Verhalten entweder auf Dev-Maschinen oder dem TS selbst zu reproduzieren. Das letzte Mal sah ich dieses Verhalten etwa zwei Stunden nach dem Start der Anwendung.

Jede Hilfe wird geschätzt.

Danke, Sjur

+0

Upstream cefclient macht einen Trick, wenn das Fenster minimiert wird, wird die Größe des Browserfensters auf 0x0 gesetzt, um die Ressourcennutzung zu reduzieren. Vielleicht könnte dies Ihnen helfen, den Beispielcode hier zu sehen: https://github.com/cztomczak/phpdesktop/issues/179 –

+0

Danke, ich habe das versucht, aber die Fenstergröße hat keine Wirkung. Läuft immer noch bei 100% CPU. Ich habe das Problem von Zeit zu Zeit auch auf meinem Dev-Rechner reproduziert, konnte das Problem aber immer noch nicht lokalisieren. – sjur

Antwort

-1

Sorry für die späte Antwort.

Schließen Sie Ihre App und löschen Sie die Cache- und Cookie-Verzeichnisse.

+0

Danke, aber meine Benutzer haben keine Probleme damit sie die App einfach hängen lassen. Was ich zur Zeit gemacht habe, ist die Überwachung der CPU-Auslastung jedes Render-Prozesses und die Beendigung der CPU-Auslastung, nachdem das Browser-Fenster ausgeblendet wurde. Wenn ich wieder sichtbar gemacht wurde, feuere ich refresh() und der Haupt-Chrome-Prozess startet einen neuen Render-Prozess. Das scheint zu funktionieren, aber es sollte eine bessere Lösung geben ... – sjur

Verwandte Themen