IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Explications concernant deux compteurs de performances


Sujet :

MS SQL Server

  1. #1
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut Explications concernant deux compteurs de performances
    Salut,

    Qqqn pourrait-il m'expliquer à quoi correspondent les compteurs:
    • SQL Server: General Statistics/Connexions utilisateur
    • SQL Server: General Statistics/Connexions logiques

    Les deux évoluent en parallèle. J'aimerais savoir quelles devrait être leurs valeurs moyennes.
    Pour indication, certaines pages du site internet sur lequel je bosse font monter ces compteur à plus de 90 en situation de développement (cad un utilisateur en mm temps).

    Merci. A plus

    Immo

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    "Connexions utilisateur" doit être le nombre de connexions

  3. #3
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Voici une vue des perfs du serveur de prod.

    Qqn peut-il me donner un avis sur l'etat de santé?

    Merci

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonsoir,

    Désolé pour mon post, j'avais commencé une réponse qui s'avère ne pas être correcte et précise.

    J'aurais dit que "Connexions utilisateur" sont des connexions à SQL Server avec un USER qui n'a pas de ROLE d'application, et "Connexions logiques" les autres connexions, mais je ne pense pas que cela soit exactement vrai.

    Sur ton graphe, on voit qu'il y a un paquet de connexions, environ 600 par seconde, ça paraît assez élevé.

    Ton Serveur s'étrangle-t-il ? Qu'obtiens-tu lorsque tu requêtes sys.sysprocesses pour des SPID supérieurs à 50 ?

  5. #5
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Salut,

    Merci de ton aide
    Citation Envoyé par elsuket Voir le message
    Ton Serveur s'étrangle-t-il ?
    Oui ça rame.
    Citation Envoyé par elsuket Voir le message
    Qu'obtiens-tu lorsque tu requêtes sys.sysprocesses pour des SPID supérieurs à 50 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(*) AS [ALLPROCESSES] FROM sys.sysprocesses
    SELECT COUNT(*) AS [SPIDOVER50] FROM sys.sysprocesses where spid > 50
    SELECT COUNT(*) AS [SLEEPINGPROCESSESSPIDOVER50] FROM sys.sysprocesses where status = 'sleeping' and spid > 50
    885 process en tout dont 865 process spid > 50 dont 859 dormants.

    Je n'ai aucun élément de comparaison...

    Merci

    A+

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    ça pourrait bien ressembler à une application qui ne ferme pas ses connexions ... utilisez-vous un pool ou est-ce que client/serveur ?

  7. #7
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Salut,

    La config est :
    • Une base de données SQL Server 2005 sur Windows Server 2003
    • 5 serveurs IIS frontaux sur Windows Server 2003 distribués par un load balancer hebergeant chacun 3 sites web.
    • Les sites sont dans un seul pool à chaque fois. La memoire consommée par le process w3wp en charge peut dépasser 1Go.
    • 1 serveur IIS interne pour l'administration sur Windows Server 2003

    Il y a plusieurs dizaines de milliers de visiteurs uniques par jour.

    Merci

    A+

  8. #8
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonsoir,

    885 process c'est assez énorme, je suis de l'avis de Kagemaru.

    Combien de process actifs as-tu ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ProcessActifs = COUNT(*)
    FROM sys.sysprocesses
    WHERE cmd != 'AWAITING COMMAND'
    En tout cas il doit y avoir un twist dans ton pool de connexions.
    Cela peut provenir aussi de requêtes qui sont trop longues à s'éxécuter ou de transactions qui restent ouvertes (DBCC OPENTRAN)

    Que te retourne la requête suivante ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
        scheduler_id, -- N° du processeur
    	is_idle,
        current_tasks_count, 
        runnable_tasks_count
    FROM sys.dm_os_schedulers 
    WHERE scheduler_id < 255
    Si la colonne runnable_tasks_count dépasse 5 c'est que tu es en surcharge.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    SELECT SESSIONS.SESSION_ID,
    		ENDPOINTS.NAME,
    		ENDPOINTS.PROTOCOL_DESC,
    		SESSIONS.HOST_NAME,
    		SESSIONS.PROGRAM_NAME,
    		SESSIONS.LOGIN_NAME,
    		SESSIONS.STATUS,
    		COUNT(*)
    FROM SYS.DM_EXEC_SESSIONS SESSIONS
    LEFT JOIN SYS.ENDPOINTS ENDPOINTS ON SESSIONS.ENDPOINT_ID = ENDPOINTS.ENDPOINT_ID
    WHERE SESSIONS.HOST_NAME IS NOT NULL
    --AND STATUS != 'sleeping'
    --AND HOST_NAME = ''
    GROUP BY 
    		SESSIONS.SESSION_ID,
    		ENDPOINTS.NAME,
    		ENDPOINTS.PROTOCOL_DESC,
    		SESSIONS.HOST_NAME,
    		SESSIONS.PROGRAM_NAME,
    		SESSIONS.LOGIN_NAME,
    		SESSIONS.STATUS
    --ORDER BY STATUS, ENDPOINTS.NAME
    ORDER BY SESSIONS.SESSION_ID
    te donnera la liste des connexions avec leur statut ...

    A+

  9. #9
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    [QUOTE=elsuket;2906465]Combien de process actifs as-tu ?QUOTE]
    Une vingtaine.
    Citation Envoyé par elsuket Voir le message
    Que te retourne la requête suivante ?[/
    J'ai joint un tableau recapitulatif.
    [EDIT]Ca chauffe ceci dit, les requetes indique une file d'attente "work_queue_count" à 0. Ce qui voudrait dire qu'aucune requete ne bouchonne.[/EDIT]

    Merci de vos conseils.

    A+

  10. #10
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonsoir,

    Essaie ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    DECLARE @PROCESSES TABLE
    (
            SPID SMALLINT,
            LOGINNAME SYSNAME,
            BLOCKED SMALLINT,
            CPU INT,
            PHYSICAL_IO INT,
            RQ_TIME DATETIME,
            LAUNCHED VARCHAR(16),
            HOSTNAME VARCHAR(64),
            STATUS SYSNAME,
            COMMAND VARCHAR(64),
            DB VARCHAR(32),
            PROGRAM_NAME VARCHAR(128),
            SQL VARCHAR(8000)
    );
     
    INSERT @PROCESSES
    SELECT
            PROCESS.SPID,
            CONVERT(SYSNAME, RTRIM(PROCESS.LOGINAME)) LOGINNAME,
            PROCESS.BLOCKED,
            PROCESS.CPU,
            PROCESS.PHYSICAL_IO,
            SESSION.last_request_start_time,
            CASE(CONVERT(VARCHAR, DATEDIFF(second, SESSION.last_request_start_time, GETDATE())/3600) + 'h ')
                    WHEN '0h' THEN ''
                    ELSE CONVERT(VARCHAR, DATEDIFF(second , SESSION.last_request_start_time, GETDATE())/3600) + 'h '
            END +
            CASE(CONVERT(VARCHAR, DATEDIFF(second, SESSION.last_request_start_time, GETDATE())/60%60) + 'min ')
                            WHEN '0min' THEN ''
                            ELSE CONVERT(VARCHAR, DATEDIFF(second, SESSION.last_request_start_time, GETDATE())/60%60) + 'min '
     
            END +
            CONVERT(VARCHAR, DATEDIFF(second, SESSION.last_request_start_time, GETDATE())%60) + 's' AS LAUNCHED,
            PROCESS.HOSTNAME,
            UPPER(PROCESS.STATUS) Status,
            UPPER(PROCESS.CMD) Command,
            DB_NAME(PROCESS.DBID) DB,
            CASE SUBSTRING(PROCESS.PROGRAM_NAME, 1, 38)
                    WHEN 'Microsoft SQL Server Management Studio' THEN 'SSMS Query'
                    ELSE PROCESS.PROGRAM_NAME
            END PROGRAM_NAME,
            CONVERT(VARCHAR(8000), ST.text) SQL
    FROM sys.sysprocesses (nolock) PROCESS
    JOIN sys.dm_exec_sessions SESSION (nolock) ON PROCESS.spid = SESSION.session_id
    CROSS APPLY sys.dm_exec_sql_text(PROCESS.sql_handle) ST
    WHERE SPID > 50
    AND SPID != @@SPID
    AND CMD != 'AWAITING COMMAND'
    AND PROCESS.PROGRAM_NAME NOT LIKE 'DatabaseMail90%'
    ORDER BY PROCESS.SPID
    SELECT SPID, COUNT(*) NB_THREADS, LOGINNAME, BLOCKED, SUM(CPU) CPU, SUM(PHYSICAL_IO) PHYSICAL_IO, RQ_TIME, LAUNCHED, HOSTNAME, STATUS, COMMAND, DB, PROGRAM_NAME, SQL
     
    FROM @PROCESSES
    GROUP BY SPID, LOGINNAME, BLOCKED, RQ_TIME, LAUNCHED, HOSTNAME, STATUS, COMMAND, DB, PROGRAM_NAME, SQL
    ORDER BY SPID, LOGINNAME DESC
    As-tu la colonne BLOCKED <> 0 parfois ?

  11. #11
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Salut,

    J'ai une seule ligne qui est renvoyée mais elle n'est pas bloquée.

    Je voudrai savoir une chose: une connection en status "sleeping" est-elle à la disposition d'une autre requête ou bien est-elle inutilisable?

    A+

  12. #12
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Re,

    Petite question subsidiaire: y a-t-il une requete SQL qui permet de ré-initialiser les connections en statut "sleeping" (les supprimer).

    Merci

    A+

  13. #13
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonsoir,

    Un processus dont le status est "sleeping" ne consomme pas de ressources.
    En revanche c'est le pool de connexions qui les a créés qui ne les a peut-être pas fermés, mais là je sèche ...
    Quelqu'un pour nous aider svp

  14. #14
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Un processus dont le status est "sleeping" ne consomme pas de ressources.
    Par contre, il mobilise en port, non? Sachant que SQL Server n'en dispose que d'un nombre limité cela peut être génant, non?

    A+

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    Par contre, il mobilise en port, non? Sachant que SQL Server n'en dispose que d'un nombre limité cela peut être génant, non?
    Il mobilise une connexion, donc consomme de la mémoire pour "rien" et oblige SQL Server à gérer ces connexions inactives. Souvent ce genre de problème est lié au codage de l'application qui oublie de fermer un recordset ou une connexion.

    Est-ce de l'asp .net ?

    Sinon, serait-il possible d'envoyer dans un fichier le contenu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from sysprocesses
    lorsque le pb survient ?

    merci

  16. #16
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Bon, après un peu bcp de temps à osculter le serveur SQL, il semblerait que ce soit un pb de pagination.
    Toutes les 10 minutes le serveur SQL se met à paginer comme un malade.
    Le serveur a 16go de RAM, 8 processeurs (un monstre quoi). Pourtant il plafonne à 12go (le process SQL consomme en ce moment 8Go) et pagine.
    D'ailleurs, il vient de le faire à 8go environ et le process est redescendu à 0go. Il semble donc avoir redémarré.

    Y a-t-il un paramètre qui contrôle la RAM consommée par SQL server?
    Quelle paramètres de pagination devrais-je appliquer?

    Merci

  17. #17
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Bon ben avec le Service Pack 2 de SQL Server c'est mieux...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. explication concernant UserForm
    Par Lelie dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/12/2007, 15h27
  2. Compteur de performance désactivé
    Par rcgilbert dans le forum Framework .NET
    Réponses: 6
    Dernier message: 16/07/2007, 11h06
  3. Explication concernant le sous-forum Autres et le forum Bibliothèques
    Par hiko-seijuro dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 22/06/2007, 23h54
  4. Réponses: 1
    Dernier message: 02/03/2007, 17h03
  5. [WMI][C++] Créé un compteur de performance
    Par chronos dans le forum Windows
    Réponses: 2
    Dernier message: 27/03/2006, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo