OVH Cloud OVH Cloud

mesurer la charge CPU en transact SQL

1 réponse
Avatar
franck
Bonjour,

nous avons de gros problèmes de performance avec la réplication de
fusion. A savoir qu'actuellement tout peu se passer en quelques minutes
comme en une heure, créant un véritable goulot d'étranglement pour les
synchronisations suivantes. Je m'explique, s'il s'avère que la
synchronisation d'un abonné va mettre plus de 30 minutes, nous voudrions
éviter qu'un autre abonné démarre une synchronisation et par conséquent,
augmente les temps, voir fasse partir en timeout toutes les synchros faute
de ressource CPU disponible. De plus les verrous entre synchros simultanées
ralentissent TOUTES les synchros....

D'où l'idée de créer un job qui puisse régler le nombre d'abonné en fonction
de la charge processeur sur le moment.

Par exemple:

si synchros en cours utilisent < 50 % du CPU alors
augmenter le nombre de nouvelles synchros possibles simultanément
sinon
reduire le nombre de nouvelles synchros possibles simultanément

Si quelqu'un à des idéés...:0)
Merci d'avance!

1 réponse

Avatar
bruno reiter
tu peux peut-etre partir de ce script qui donne le nombre de répli en cours
et de locks ( à adapter à tes noms de fusion).


-- liste des fusions en cours avec le nb de mags et le nb de
locks -------------
SELECT program_name=SUBSTRING(program_name,25,5), nbRepl=count(*),
nblocks=sum(nblocks)
INTO #ReplEnCours
FROM (
SELECT hostname, program_name,
MoyHeur=AVG(DATEPART(hh,last_batch)*100+DATEPART(mi,last_batch)),
nblocks=sum(case when blocked = 0 then 0 else 1 end)
from master.dbo.sysprocesses
where program_name like '%fusion%'
or program_name like '%mag filtre%'
group by hostname, program_name
) as A
GROUP BY SUBSTRING(program_name,25,5)

SELECT * FROM #ReplEnCours
--DROP TABLE #ReplEnCours


br


"franck" a écrit dans le message de news:

Bonjour,

nous avons de gros problèmes de performance avec la réplication de
fusion. A savoir qu'actuellement tout peu se passer en quelques minutes
comme en une heure, créant un véritable goulot d'étranglement pour les
synchronisations suivantes. Je m'explique, s'il s'avère que la
synchronisation d'un abonné va mettre plus de 30 minutes, nous voudrions
éviter qu'un autre abonné démarre une synchronisation et par conséquent,
augmente les temps, voir fasse partir en timeout toutes les synchros faute
de ressource CPU disponible. De plus les verrous entre synchros
simultanées ralentissent TOUTES les synchros....

D'où l'idée de créer un job qui puisse régler le nombre d'abonné en
fonction de la charge processeur sur le moment.

Par exemple:

si synchros en cours utilisent < 50 % du CPU alors
augmenter le nombre de nouvelles synchros possibles simultanément
sinon
reduire le nombre de nouvelles synchros possibles simultanément

Si quelqu'un à des idéés...:0)
Merci d'avance!