2017-04-12 9 views
1

J'ai utilisé CEF4Delphi pour intégrer CEF/Chromium dans mon application Delphi XE 10.1. Je suis actuellement à la version 3.2987.1597.gffc5773 CEF (Chromium Version 57.0.2987.110), 32 bits. Je peux voir le processus de rendu dans le Gestionnaire des tâches de Windows restant normalement à 0% CPU lorsque les clients ne naviguent pas, mais parfois le processus de rendu semble être bloqué et attrape tout le CPU qu'il peut obtenir (100% de un seul CPU, 16% du total puisque j'en ai 6 disponibles), même lorsque l'utilisateur ne fait rien et que la fenêtre du navigateur n'est pas visible. Lorsque coincé, il semble rester bloqué jusqu'à ce que je termine le processus, plusieurs heures ont été observées. J'ai activé la consignation détaillée, mais rien n'est consigné tant que l'utilisateur ne fait rien. Je reçois beaucoup de journalisation au démarrage et lorsque l'utilisateur navigue activement.Processus de rendu CEF/chrome utilisation du processeur

Des conseils pour résoudre ce problème? Je vois seulement ce problème sur mon Terminal Server et n'ai pas pu reproduire le comportement moi-même sur les machines de développement ou le TS. La dernière fois que j'ai vu ce comportement était environ deux heures après le démarrage de l'application.

Toute aide appréciée.

Merci, Sjur

+0

Cefclient en amont fait une astuce lorsque la fenêtre est réduite, il définit la taille de la fenêtre du navigateur à 0x0 pour réduire l'utilisation des ressources. Peut-être que cela pourrait vous aider à voir le code exemple ici: https://github.com/cztomczak/phpdesktop/issues/179 –

+0

Merci, j'ai essayé mais la taille de la fenêtre n'a aucun effet. Fonctionne toujours à 100% CPU. J'ai reproduit le problème de temps en temps sur ma machine de dev maintenant, mais toujours incapable de localiser le problème. – sjur

Répondre

-1

Désolé pour la réponse tardive.

Fermez votre application et effacez les répertoires de cache et de cookies.

+0

Merci, mais mes utilisateurs ne rencontrent aucun problème, ils laissent simplement l'application suspendue. Ce que j'ai actuellement fait est de surveiller l'utilisation du processeur de chaque processus de rendu et de mettre fin à ceux qui ont une utilisation élevée du processeur après que la fenêtre du navigateur ait été cachée. Une fois rendu visible à nouveau, je lance refresh() et le processus chrome principal lance un nouveau processus de rendu. Cela semble fonctionner, mais il devrait y avoir une meilleure solution ... – sjur