Dépannage relatives à une performance de serveur réduisant périodique
J'ai eu l'habitude de résoudre les problèmes associés aux performances du serveur intermittent et j'ai doté des idées. Je cherche des suggestions sur la manière dont je peux déterminer la cause du problème.
nous (mon équipe et moi) Il y a plusieurs années, nous avons développé une application client-serveur Windows Forms Utilisation d'une base de données SQL Server pour le client. Le client a récemment commencé à des problèmes de performance et il a décidé de mettre à jour son infrastructure. Ils ont migré d'une machine physique SBS Dans un environnement virtuel avec plusieurs machines virtuelles. Nous avons transféré avec succès des applications et des bits SQL dans un nouvel environnement. Le client a ensuite demandé aux mises à jour des applications pour corriger certaines fuites de mémoire et d'autres problèmes. / Les erreurs de performance avec lesquelles ils ont travaillé pendant de nombreuses années. Nous avons effectué des mises à jour et le système a reçu de bonnes notes dans notre environnement. Ensuite, nous avons tourné leur nouvel environnement de production et le système semblait bien fonctionner.
Un jour ou deux après le déploiement, nous avons reçu des plaintes de suspension ou de système de retard / Enregistrez des formulaires de données ou créant des rapports. Nous avons contacté le client à distance et avons confirmé le problème. Nous avons analysé l'environnement client et vérifié des fuites de mémoire possibles et d'autres problèmes pouvant causer des symptômes. Nous n'avons rien trouvé. Ensuite, nous avons compris que le problème de la productivité affecte plusieurs ordinateurs sur le réseau et devrait être lié à l'environnement. Le client a ensuite demandé à ses spécialistes de ses équipements d'éliminer la configuration potentielle d'équipement. / Réseaux pour la source. Ils n'ont rien trouvé.
Au cours de nos rondes de dépannage avec le client, nous avons trébuché de manière à corriger le problème de performance lorsqu'il se produit. (Ce qui semble aléatoire). Rechargement du serveur élimine le problème, mais il s'agit d'une décision invalide.
Autre moyen et la raison pour laquelle j'ai publiquement - Lorsqu'un client remarque une baisse de performance, il peut ouvrir une version "obsolète" de l'application. (qui est toujours disponible sur certaines machines clientes) et la performance sera restaurée. Le redémarrage d'une instance existante de l'application client n'est pas requis.
Le système fonctionne bien entre les incidents et le problème semble se produire en moyenne chaque 2-3 jour, mais travaillé sans incidents pendant la semaine et avait également plusieurs incidents en une journée (un dans la matinée puis une par semaine). Jour).
Nous pensions que le problème pourrait être dans le problème avec SQL Server. Donc, j'ai profilé, gardé la traçage et a également suivi des compteurs de performance SQL À la recherche de conseils. Je ne suis pas un expert sur la performance SQL, Et donc je ne comprends peut-être pas les compteurs corrects, mais SQL Server, Cela ne semble pas très chargé. Il n'y a pas de sauts constants de la CPU, de la mémoire, des paquets par seconde, des transactions par seconde, des compilations par seconde, des compilations répétées par seconde et les mètres de la pagination et du cache sont généralement statiques.
L'application peut être démarrée simultanément à partir de 10 avant que 20 spécimens actifs. L'application n'a pas été initialement écrite en utilisant les méthodes les plus efficaces d'extraction des données, mais la charge a été créée. - C'est ce que le serveur ne peut pas faire face.
J'ai aussi suivi les grumes des événements Windows Pour les erreurs et les avertissements susceptibles de perdre la lumière sur le problème, mais ne voyaient rien qui a été délivré immédiatement avant ou lors d'un incident indiquant le problème.
Une autre étrange observation que nous avons constatée était que l'application fonctionne sans réduire les performances lors du démarrage directement sur le serveur, quelle que soit la performance globale du système. J'ai lancé l'application directement sur le serveur lorsque le problème est apparu sur d'autres machines et je n'avais pas de lenteur ou de retard.
Désolé pour le livre. Je vais continuer à chercher des astuces, mais toutes les suggestions seront très reconnaissantes.
Serveur: Windows Server 2012 R2 (Machine virtuelle avec un grand nombre de ressources allouées) SQL: SQL Server 2014 Standard Clients: mixte, mais surtout Windows 7 Professional
nous (mon équipe et moi) Il y a plusieurs années, nous avons développé une application client-serveur Windows Forms Utilisation d'une base de données SQL Server pour le client. Le client a récemment commencé à des problèmes de performance et il a décidé de mettre à jour son infrastructure. Ils ont migré d'une machine physique SBS Dans un environnement virtuel avec plusieurs machines virtuelles. Nous avons transféré avec succès des applications et des bits SQL dans un nouvel environnement. Le client a ensuite demandé aux mises à jour des applications pour corriger certaines fuites de mémoire et d'autres problèmes. / Les erreurs de performance avec lesquelles ils ont travaillé pendant de nombreuses années. Nous avons effectué des mises à jour et le système a reçu de bonnes notes dans notre environnement. Ensuite, nous avons tourné leur nouvel environnement de production et le système semblait bien fonctionner.
Un jour ou deux après le déploiement, nous avons reçu des plaintes de suspension ou de système de retard / Enregistrez des formulaires de données ou créant des rapports. Nous avons contacté le client à distance et avons confirmé le problème. Nous avons analysé l'environnement client et vérifié des fuites de mémoire possibles et d'autres problèmes pouvant causer des symptômes. Nous n'avons rien trouvé. Ensuite, nous avons compris que le problème de la productivité affecte plusieurs ordinateurs sur le réseau et devrait être lié à l'environnement. Le client a ensuite demandé à ses spécialistes de ses équipements d'éliminer la configuration potentielle d'équipement. / Réseaux pour la source. Ils n'ont rien trouvé.
Au cours de nos rondes de dépannage avec le client, nous avons trébuché de manière à corriger le problème de performance lorsqu'il se produit. (Ce qui semble aléatoire). Rechargement du serveur élimine le problème, mais il s'agit d'une décision invalide.
Autre moyen et la raison pour laquelle j'ai publiquement - Lorsqu'un client remarque une baisse de performance, il peut ouvrir une version "obsolète" de l'application. (qui est toujours disponible sur certaines machines clientes) et la performance sera restaurée. Le redémarrage d'une instance existante de l'application client n'est pas requis.
Le système fonctionne bien entre les incidents et le problème semble se produire en moyenne chaque 2-3 jour, mais travaillé sans incidents pendant la semaine et avait également plusieurs incidents en une journée (un dans la matinée puis une par semaine). Jour).
Nous pensions que le problème pourrait être dans le problème avec SQL Server. Donc, j'ai profilé, gardé la traçage et a également suivi des compteurs de performance SQL À la recherche de conseils. Je ne suis pas un expert sur la performance SQL, Et donc je ne comprends peut-être pas les compteurs corrects, mais SQL Server, Cela ne semble pas très chargé. Il n'y a pas de sauts constants de la CPU, de la mémoire, des paquets par seconde, des transactions par seconde, des compilations par seconde, des compilations répétées par seconde et les mètres de la pagination et du cache sont généralement statiques.
L'application peut être démarrée simultanément à partir de 10 avant que 20 spécimens actifs. L'application n'a pas été initialement écrite en utilisant les méthodes les plus efficaces d'extraction des données, mais la charge a été créée. - C'est ce que le serveur ne peut pas faire face.
J'ai aussi suivi les grumes des événements Windows Pour les erreurs et les avertissements susceptibles de perdre la lumière sur le problème, mais ne voyaient rien qui a été délivré immédiatement avant ou lors d'un incident indiquant le problème.
Une autre étrange observation que nous avons constatée était que l'application fonctionne sans réduire les performances lors du démarrage directement sur le serveur, quelle que soit la performance globale du système. J'ai lancé l'application directement sur le serveur lorsque le problème est apparu sur d'autres machines et je n'avais pas de lenteur ou de retard.
Désolé pour le livre. Je vais continuer à chercher des astuces, mais toutes les suggestions seront très reconnaissantes.
Serveur: Windows Server 2012 R2 (Machine virtuelle avec un grand nombre de ressources allouées) SQL: SQL Server 2014 Standard Clients: mixte, mais surtout Windows 7 Professional
Aucun résultat connexe trouvé
Invité:
Pour répondre aux questions, connectez-vous ou registre
2 réponses
Dominique
Confirmation de:
https://www.brentozar.com/resp ... able/
. Vous devrez configurer le processus enregistré pour travailler plus longtemps afin que les données continuent d'être enregistrées. (SET @numberOfRuns = 10), Ou même abandonner ce chèque.
Il existe des outils qui facilitent l'analyse du journal des performances du serveur.
https://pal.codeplex.com/
est une. Ici
https://blogs.technet.microsoft.com/clinth/page/2/
.
Vous pouvez essayer d'utiliser un moniteur réseau pour voir ce qui se passe sur le client lorsque le problème se produit. Faites également attention aux compteurs de la circulation NIC dans perfmon sur le serveur. Vérifier les sessions tcp, Si, peut-être, il y avait un problème avec netstat. Je sais que peu de choses sur les réseaux, c'est donc le cas lorsque l'aveugle mène les aveugles :)
Alice
Confirmation de: