Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Saturation de la RAM par des applis pas très bien devoloppées

11 réponses
Avatar
fab111
Bonjour,

Voilà mon pb. je dispose de plusieurs application web. sur un serveur
installé avec IIS5 et SQL 2000.
Mais une des applis apparement mal développée, exécute des requêtes qui ne
libére pas toutes la RAM après son exécution.
Existe t'il une fonction qui me permette à un moment donné de libérer la
mémoire et le résultat des requêtes en cache.

10 réponses

1 2
Avatar
Med Bouchenafa
Il n'est pas de la responsabilité des applications de libérer la mémoire utilisée par SQL Server
C'est SQL Server et uniquement lui qui gère la mémoire et dans l'ensemble il se débrouille très bien
Il n'y a pas à intervenir
Il y a effectivement des commandes pour libérer le cache mais il vaut mieux laisser SQL Server le
faire
Quels sont les symptômes de ton problème?

--
Bien cordialement
Med Bouchenafa

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

Bonjour,

Voilà mon pb. je dispose de plusieurs application web. sur un serveur
installé avec IIS5 et SQL 2000.
Mais une des applis apparement mal développée, exécute des requêtes qui ne
libére pas toutes la RAM après son exécution.
Existe t'il une fonction qui me permette à un moment donné de libérer la
mémoire et le résultat des requêtes en cache.


Avatar
fab111
L'application en question a été déveleppé par Webdev.
Le problème exacte est le suivant, chaque fois qu'un utilisateur utilise
l'application en question (Je retrouve les traces de connexion ds. le journal
IIS), la mémoire du système grimpe en fléche par tranche de 250Mo. (je
dispose d'1Go. de RAM), malheureusement, la mémoire n'est pas redonner au
systéme même après 24h00, que fait l'appli. ? sur ce ponit j'attend une
réponse du développeur, mais apparement il y a une requête que le système ne
digére pas.
Je surveille le serveur à l'aide de l'analysateur de performance, j'ai mis
le compteur 'Avaible Memory' en route et celui décline au fur et à mesure des
accès à cette appli. (MRTG me donne les mêmes résultat l'occupation mémoire
augmente sans cesse).
Pour terminer la mémoire est blindée à telle point que mon serveur devient
inutilisable, et nécessite un redémarrage de SQL.

"Med Bouchenafa" a écrit :

Il n'est pas de la responsabilité des applications de libérer la mémoire utilisée par SQL Server
C'est SQL Server et uniquement lui qui gère la mémoire et dans l'ensemble il se débrouille très bien
Il n'y a pas à intervenir
Il y a effectivement des commandes pour libérer le cache mais il vaut mieux laisser SQL Server le
faire
Quels sont les symptômes de ton problème?

--
Bien cordialement
Med Bouchenafa

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

> Bonjour,
>
> Voilà mon pb. je dispose de plusieurs application web. sur un serveur
> installé avec IIS5 et SQL 2000.
> Mais une des applis apparement mal développée, exécute des requêtes qui ne
> libére pas toutes la RAM après son exécution.
> Existe t'il une fonction qui me permette à un moment donné de libérer la
> mémoire et le résultat des requêtes en cache.





Avatar
bruno reiter [MVP]
sans doute une trace donnerait plus d'informations, à lancer en filtrant sur
le poste avant de lancer l'appli

br

"fab111" wrote in message
news:
L'application en question a été déveleppé par Webdev.
Le problème exacte est le suivant, chaque fois qu'un utilisateur utilise
l'application en question (Je retrouve les traces de connexion ds. le
journal
IIS), la mémoire du système grimpe en fléche par tranche de 250Mo. (je
dispose d'1Go. de RAM), malheureusement, la mémoire n'est pas redonner au
systéme même après 24h00, que fait l'appli. ? sur ce ponit j'attend une
réponse du développeur, mais apparement il y a une requête que le système
ne
digére pas.
Je surveille le serveur à l'aide de l'analysateur de performance, j'ai mis
le compteur 'Avaible Memory' en route et celui décline au fur et à mesure
des
accès à cette appli. (MRTG me donne les mêmes résultat l'occupation
mémoire
augmente sans cesse).
Pour terminer la mémoire est blindée à telle point que mon serveur devient
inutilisable, et nécessite un redémarrage de SQL.

"Med Bouchenafa" a écrit :

Il n'est pas de la responsabilité des applications de libérer la mémoire
utilisée par SQL Server
C'est SQL Server et uniquement lui qui gère la mémoire et dans l'ensemble
il se débrouille très bien
Il n'y a pas à intervenir
Il y a effectivement des commandes pour libérer le cache mais il vaut
mieux laisser SQL Server le
faire
Quels sont les symptômes de ton problème?

--
Bien cordialement
Med Bouchenafa

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

> Bonjour,
>
> Voilà mon pb. je dispose de plusieurs application web. sur un serveur
> installé avec IIS5 et SQL 2000.
> Mais une des applis apparement mal développée, exécute des requêtes qui
> ne
> libére pas toutes la RAM après son exécution.
> Existe t'il une fonction qui me permette à un moment donné de libérer
> la
> mémoire et le résultat des requêtes en cache.







Avatar
AB
Bonjour,
Ton problème du fait que la configuration de la mémoire maxi de ton server
sql server est la même que celle de ton server windows.
En fait, contrairement à ce qui a été répondu dans un post, sql server ne
sait pas libérer de la RAM. Il prend ce qui est disponible et ne le rend pas
au système.
Si ta configuration mémoire est mal faite. Sql server prend l'ensemble de la
RAM pour son cache et asphyxie l'OS. Le phénomène qui se produit est le
suivant: Le serveur rame, semble avoir des millions de traitements mais en
fait il passe son temps à attendre on doit avoir l'impression qu'il mouline
dans le vide.
Il perd son temps à parcourir tout le cache (1GO), je sais le cache c'est
performant!, mais dans ce cas précis. Lorsque toute la RAM est allouée au
serveur sql et très peu à l'OS voir pas du tout car sql server a tout alloué.
Le système pagine et les perfs se dégradent.

La solution consiste à dans au niveau propriétés du serveur sql, onglet
mémoire. Passer la taille maxi de la RAM à 2/3 de la RAM de ton serveur. Tu
as deux options pour la mémoire: Dynamique ou fixe.
Opte pour la dynamque si tu veux que sql server libère de l'espace mémoire
des 2/3 ram qui lui seront alloué.
Si l'option fixe est mise en place, ton serveur ne libérera jamais de la
ram. Il raffraichira le cache mais ça s'arrête là. Donc ne compte pas sur sql
server pour qu'il te libère de la RAM. car dès qu'il a de l'espace mémoire de
disponible, il utilise pour du cache. Donc, préfères une configuration
manuelle que celle par défaut.

AB

Comme il a toute la RAM pleine de cache,
Attendre quoi? le que l'OS ait des ressources pour répondre

"fab111" a écrit :

Bonjour,

Voilà mon pb. je dispose de plusieurs application web. sur un serveur
installé avec IIS5 et SQL 2000.
Mais une des applis apparement mal développée, exécute des requêtes qui ne
libére pas toutes la RAM après son exécution.
Existe t'il une fonction qui me permette à un moment donné de libérer la
mémoire et le résultat des requêtes en cache.


Avatar
Med Bouchenafa
>>En fait, contrairement à ce qui a été répondu dans un post, sql server ne
sait pas libérer de la RAM. Il prend ce qui est disponible et ne le rend
pas
au système.





Sur quel critère, expérience ou fait tu te bases pour affirmer cela ?

SQL Server sait parfaitement liberer la mémoire et la rendre à l'OS lorsque
celui-ci lui en fait la demande
Il est vrai que si SQL Server est configuré en memoire dynamique (valeur par
défaut), il a tendance à consommer toute la mémoire mise à disposition.
Mais si l'OS ou une autre application nécessite de la mémoire, SQL Server
libère une partie de sa mémoire et la rend à l'OS
Un process système, le lazywriter, s'occupe continuellement de voir si l'OS
a suffisamment de mémoire de disponible (entre 4 et 10 Mo)
Dès que la mémoire chute en-dessous de cette valeur, une partie de la
mémoire consommée par le BufferPool de SQL Server est libérée et est rendue
à l'OS


--
Bien cordialement
Med Bouchenafa



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

Bonjour,
Ton problème du fait que la configuration de la mémoire maxi de ton server
sql server est la même que celle de ton server windows.
En fait, contrairement à ce qui a été répondu dans un post, sql server ne
sait pas libérer de la RAM. Il prend ce qui est disponible et ne le rend
pas
au système.
Si ta configuration mémoire est mal faite. Sql server prend l'ensemble de
la
RAM pour son cache et asphyxie l'OS. Le phénomène qui se produit est le
suivant: Le serveur rame, semble avoir des millions de traitements mais en
fait il passe son temps à attendre on doit avoir l'impression qu'il
mouline
dans le vide.
Il perd son temps à parcourir tout le cache (1GO), je sais le cache c'est
performant!, mais dans ce cas précis. Lorsque toute la RAM est allouée au
serveur sql et très peu à l'OS voir pas du tout car sql server a tout
alloué.
Le système pagine et les perfs se dégradent.

La solution consiste à dans au niveau propriétés du serveur sql, onglet
mémoire. Passer la taille maxi de la RAM à 2/3 de la RAM de ton serveur.
Tu
as deux options pour la mémoire: Dynamique ou fixe.
Opte pour la dynamque si tu veux que sql server libère de l'espace mémoire
des 2/3 ram qui lui seront alloué.
Si l'option fixe est mise en place, ton serveur ne libérera jamais de la
ram. Il raffraichira le cache mais ça s'arrête là. Donc ne compte pas sur
sql
server pour qu'il te libère de la RAM. car dès qu'il a de l'espace mémoire
de
disponible, il utilise pour du cache. Donc, préfères une configuration
manuelle que celle par défaut.

AB

Comme il a toute la RAM pleine de cache,
Attendre quoi? le que l'OS ait des ressources pour répondre

"fab111" a écrit :

Bonjour,

Voilà mon pb. je dispose de plusieurs application web. sur un serveur
installé avec IIS5 et SQL 2000.
Mais une des applis apparement mal développée, exécute des requêtes qui
ne
libére pas toutes la RAM après son exécution.
Existe t'il une fonction qui me permette à un moment donné de libérer la
mémoire et le résultat des requêtes en cache.




Avatar
AB
Non, SQL SERVER NE SAIT PAS LIBERER DE LA MEMOIRE.
sur quoi je me base sur l'expérience. tu prends n'importe quel DBA. il te
dira la même chose. Je je dis un vrai DBA. SQL Server est gourmand en mémoire
lorsqu'il l'a prend il ne la rends à moins de relancer le service.
Il en libère mais très très très peu de l'ordre du 50 de Megas.
Dans la logique oui mais en production non.
En fait, tout est pris par le cache sql. Il met tout en cache pour que cela
aille plus vite. Du coup il ne libère pas la mémoire dès qu'il y a un meg de
libre. Sql server s'en empare pour du cache.

Tu dis dans ton post :
Un process système, le lazywriter, s'occupe continuellement de voir si l'OS
a suffisamment de mémoire de disponible (entre 4 et 10 Mo)
Dès que la mémoire chute en-dessous de cette valeur, une partie de la
mémoire consommée par le BufferPool de SQL Server est libérée et est rendue
à l'OS




Tu appelles cela suffisamment de memoire de libre entre 4 et 10 mo pour l'OS.
Rassures moi tu ne fais pas de production!!! parce que avec moins de 10 mo
de libre tu ne vas pas loin. Ton serveur rame parceque ton OS passe son temps
à paginer. Un OS serveur a besoin d'un minimum de 300 à 600 Mo de ram, à lui
seul pour tourner. lorsqu'il tourne avec SQL server.
Ensuite, sql à besoin de moins de 100 pour tourner pour le noyau et enfin le
reste Ram est utilisé pour le cache sql server.

Sans vouoir te vexer, même MS soft sait que la gestion mémoire de ses
produits n'est pas fameuses. Non pas parcequ'ils ne savent pas la gérer chez
microsoft mais à force d'abuser du cache on finit par dégrader les perfs.

Par expérience, on redémarre régulièrment nos machines et nos serveurs pour
vider la mémoire, le cache etc. pour avoir rarement des dégradations de
performances.

Il faut se baser sur des faits, sur la réalité en production. J'entends bien
que microsoft ait créé un processus dont la responsabilité est de libérer de
la mémoire. Sauf que lorsque Sql server prend une bonne partie de la ram
voire la casitotalité, lorsqu'il est en configuration par défaut, aucune
libération supérieur à 50 Mo n'est fait. Et 50 Mo pour gérer un serveur de
Prod ce n'est pas l'idéal.
Juste pour info. J'ai un serveur davec 4 Go de RAM. Ayant laisser la config
par défaut sql server en a pris 3.7 GO ce qui a provoqué un ralentissement
très fort.
Depuis que je l'ai passé en memoire dynamique avec un maxi de 2/3 de la RAM.
ça va beauoup mieux. je n'ai pas de soucis de perfs.
Par contre, la seule fois où j'ai constaté une libération de mémoire cétaits
lorsqu'il ny'avait que 10% des utilisateurs de connecter sur le server sql.
Cette libération n'a pas excéder les 50 Mo. Pourtant avec 3Go de Ram il y a
de quoi libérer.

AB

"Med Bouchenafa" a écrit :

>>En fait, contrairement à ce qui a été répondu dans un post, sql server ne
>>sait pas libérer de la RAM. Il prend ce qui est disponible et ne le rend
>>pas
>>au système.

Sur quel critère, expérience ou fait tu te bases pour affirmer cela ?

SQL Server sait parfaitement liberer la mémoire et la rendre à l'OS lorsque
celui-ci lui en fait la demande
Il est vrai que si SQL Server est configuré en memoire dynamique (valeur par
défaut), il a tendance à consommer toute la mémoire mise à disposition.
Mais si l'OS ou une autre application nécessite de la mémoire, SQL Server
libère une partie de sa mémoire et la rend à l'OS
Un process système, le lazywriter, s'occupe continuellement de voir si l'OS
a suffisamment de mémoire de disponible (entre 4 et 10 Mo)
Dès que la mémoire chute en-dessous de cette valeur, une partie de la
mémoire consommée par le BufferPool de SQL Server est libérée et est rendue
à l'OS


--
Bien cordialement
Med Bouchenafa



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

> Bonjour,
> Ton problème du fait que la configuration de la mémoire maxi de ton server
> sql server est la même que celle de ton server windows.
> En fait, contrairement à ce qui a été répondu dans un post, sql server ne
> sait pas libérer de la RAM. Il prend ce qui est disponible et ne le rend
> pas
> au système.
> Si ta configuration mémoire est mal faite. Sql server prend l'ensemble de
> la
> RAM pour son cache et asphyxie l'OS. Le phénomène qui se produit est le
> suivant: Le serveur rame, semble avoir des millions de traitements mais en
> fait il passe son temps à attendre on doit avoir l'impression qu'il
> mouline
> dans le vide.
> Il perd son temps à parcourir tout le cache (1GO), je sais le cache c'est
> performant!, mais dans ce cas précis. Lorsque toute la RAM est allouée au
> serveur sql et très peu à l'OS voir pas du tout car sql server a tout
> alloué.
> Le système pagine et les perfs se dégradent.
>
> La solution consiste à dans au niveau propriétés du serveur sql, onglet
> mémoire. Passer la taille maxi de la RAM à 2/3 de la RAM de ton serveur.
> Tu
> as deux options pour la mémoire: Dynamique ou fixe.
> Opte pour la dynamque si tu veux que sql server libère de l'espace mémoire
> des 2/3 ram qui lui seront alloué.
> Si l'option fixe est mise en place, ton serveur ne libérera jamais de la
> ram. Il raffraichira le cache mais ça s'arrête là. Donc ne compte pas sur
> sql
> server pour qu'il te libère de la RAM. car dès qu'il a de l'espace mémoire
> de
> disponible, il utilise pour du cache. Donc, préfères une configuration
> manuelle que celle par défaut.
>
> AB
>
> Comme il a toute la RAM pleine de cache,
> Attendre quoi? le que l'OS ait des ressources pour répondre
>
> "fab111" a écrit :
>
>> Bonjour,
>>
>> Voilà mon pb. je dispose de plusieurs application web. sur un serveur
>> installé avec IIS5 et SQL 2000.
>> Mais une des applis apparement mal développée, exécute des requêtes qui
>> ne
>> libére pas toutes la RAM après son exécution.
>> Existe t'il une fonction qui me permette à un moment donné de libérer la
>> mémoire et le résultat des requêtes en cache.





Avatar
Sébastien GROSBOIS \(Microsoft France\)
Bonjour,

Par défaut, si le mode AWE n'est pas activé, SQL Server ne peut pas allouer
plus de 2Go de RAM (comme n'importe quel process Win32).
Si le mode /3GB est activé dans le boot.ini, il est possible pour SQL Server
d'adressé jusqu'à 3Go. Une instance SQL Server ne peut donc pas utiliser
3,7Go ; êtes vous sûr de vos
mesure ?
D'autre part le principe général (simplifié) de la gestion mémoire de SQL
Server est qu'il n'alloue de la mémoire que lorsqu'il en a besoin (ce qui
explique que lorsque l'on vient démarrer le service
et que l'on a précisé on a fixé 'min server memory' le process n'occupe
souvent pas tout de suite cette mémoire). D'autre part, SQL Server
consommera à terme toute la mémoire physique dispo jusqu'à environ 5Mo (ou
'max server memory' si celui ci est fixé) s'il estime que c'est nécessaire
et ne la libérera que lorsque l'OS aura besoin de mémoire (par exemple par
ce qu'un autre process a besoin mémoire) sinon il ne la liberera jamais. Si
un autre process a besoin de mémoire et que SQL Server aussi (dans le cadre
d'une forte activité par exemple) on peut observer des phénomène de pompage
(libération, réallocation), c'est pourquoi on préconise de ne pas faire
cohabiter une instance SQL avec une autre application consommatrice en
mémoire sur la même machine (ex : IIS, Exchange).
Sinon, vous avez toujours la possibilité de fixer une mémoire maximum pour
l'instance SQL si vous ne pouvez pas faire autrement que de partager votre
serveur avec d'autres applicatifs.

Cordialement


"AB" wrote in message
news:
Non, SQL SERVER NE SAIT PAS LIBERER DE LA MEMOIRE.
sur quoi je me base sur l'expérience. tu prends n'importe quel DBA. il te
dira la même chose. Je je dis un vrai DBA. SQL Server est gourmand en
mémoire
lorsqu'il l'a prend il ne la rends à moins de relancer le service.
Il en libère mais très très très peu de l'ordre du 50 de Megas.
Dans la logique oui mais en production non.
En fait, tout est pris par le cache sql. Il met tout en cache pour que
cela
aille plus vite. Du coup il ne libère pas la mémoire dès qu'il y a un meg
de
libre. Sql server s'en empare pour du cache.

Tu dis dans ton post :
Un process système, le lazywriter, s'occupe continuellement de voir si
l'OS
a suffisamment de mémoire de disponible (entre 4 et 10 Mo)
Dès que la mémoire chute en-dessous de cette valeur, une partie de la
mémoire consommée par le BufferPool de SQL Server est libérée et est
rendue
à l'OS




Tu appelles cela suffisamment de memoire de libre entre 4 et 10 mo pour
l'OS.
Rassures moi tu ne fais pas de production!!! parce que avec moins de 10 mo
de libre tu ne vas pas loin. Ton serveur rame parceque ton OS passe son
temps
à paginer. Un OS serveur a besoin d'un minimum de 300 à 600 Mo de ram, à
lui
seul pour tourner. lorsqu'il tourne avec SQL server.
Ensuite, sql à besoin de moins de 100 pour tourner pour le noyau et enfin
le
reste Ram est utilisé pour le cache sql server.

Sans vouoir te vexer, même MS soft sait que la gestion mémoire de ses
produits n'est pas fameuses. Non pas parcequ'ils ne savent pas la gérer
chez
microsoft mais à force d'abuser du cache on finit par dégrader les perfs.

Par expérience, on redémarre régulièrment nos machines et nos serveurs
pour
vider la mémoire, le cache etc. pour avoir rarement des dégradations de
performances.

Il faut se baser sur des faits, sur la réalité en production. J'entends
bien
que microsoft ait créé un processus dont la responsabilité est de libérer
de
la mémoire. Sauf que lorsque Sql server prend une bonne partie de la ram
voire la casitotalité, lorsqu'il est en configuration par défaut, aucune
libération supérieur à 50 Mo n'est fait. Et 50 Mo pour gérer un serveur de
Prod ce n'est pas l'idéal.
Juste pour info. J'ai un serveur davec 4 Go de RAM. Ayant laisser la
config
par défaut sql server en a pris 3.7 GO ce qui a provoqué un ralentissement
très fort.
Depuis que je l'ai passé en memoire dynamique avec un maxi de 2/3 de la
RAM.
ça va beauoup mieux. je n'ai pas de soucis de perfs.
Par contre, la seule fois où j'ai constaté une libération de mémoire
cétaits
lorsqu'il ny'avait que 10% des utilisateurs de connecter sur le server
sql.
Cette libération n'a pas excéder les 50 Mo. Pourtant avec 3Go de Ram il y
a
de quoi libérer.

AB

"Med Bouchenafa" a écrit :

>>En fait, contrairement à ce qui a été répondu dans un post, sql server
>>ne
>>sait pas libérer de la RAM. Il prend ce qui est disponible et ne le
>>rend
>>pas
>>au système.

Sur quel critère, expérience ou fait tu te bases pour affirmer cela ?

SQL Server sait parfaitement liberer la mémoire et la rendre à l'OS
lorsque
celui-ci lui en fait la demande
Il est vrai que si SQL Server est configuré en memoire dynamique (valeur
par
défaut), il a tendance à consommer toute la mémoire mise à disposition.
Mais si l'OS ou une autre application nécessite de la mémoire, SQL Server
libère une partie de sa mémoire et la rend à l'OS
Un process système, le lazywriter, s'occupe continuellement de voir si
l'OS
a suffisamment de mémoire de disponible (entre 4 et 10 Mo)
Dès que la mémoire chute en-dessous de cette valeur, une partie de la
mémoire consommée par le BufferPool de SQL Server est libérée et est
rendue
à l'OS


--
Bien cordialement
Med Bouchenafa



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

> Bonjour,
> Ton problème du fait que la configuration de la mémoire maxi de ton
> server
> sql server est la même que celle de ton server windows.
> En fait, contrairement à ce qui a été répondu dans un post, sql server
> ne
> sait pas libérer de la RAM. Il prend ce qui est disponible et ne le
> rend
> pas
> au système.
> Si ta configuration mémoire est mal faite. Sql server prend l'ensemble
> de
> la
> RAM pour son cache et asphyxie l'OS. Le phénomène qui se produit est le
> suivant: Le serveur rame, semble avoir des millions de traitements mais
> en
> fait il passe son temps à attendre on doit avoir l'impression qu'il
> mouline
> dans le vide.
> Il perd son temps à parcourir tout le cache (1GO), je sais le cache
> c'est
> performant!, mais dans ce cas précis. Lorsque toute la RAM est allouée
> au
> serveur sql et très peu à l'OS voir pas du tout car sql server a tout
> alloué.
> Le système pagine et les perfs se dégradent.
>
> La solution consiste à dans au niveau propriétés du serveur sql, onglet
> mémoire. Passer la taille maxi de la RAM à 2/3 de la RAM de ton
> serveur.
> Tu
> as deux options pour la mémoire: Dynamique ou fixe.
> Opte pour la dynamque si tu veux que sql server libère de l'espace
> mémoire
> des 2/3 ram qui lui seront alloué.
> Si l'option fixe est mise en place, ton serveur ne libérera jamais de
> la
> ram. Il raffraichira le cache mais ça s'arrête là. Donc ne compte pas
> sur
> sql
> server pour qu'il te libère de la RAM. car dès qu'il a de l'espace
> mémoire
> de
> disponible, il utilise pour du cache. Donc, préfères une configuration
> manuelle que celle par défaut.
>
> AB
>
> Comme il a toute la RAM pleine de cache,
> Attendre quoi? le que l'OS ait des ressources pour répondre
>
> "fab111" a écrit :
>
>> Bonjour,
>>
>> Voilà mon pb. je dispose de plusieurs application web. sur un serveur
>> installé avec IIS5 et SQL 2000.
>> Mais une des applis apparement mal développée, exécute des requêtes
>> qui
>> ne
>> libére pas toutes la RAM après son exécution.
>> Existe t'il une fonction qui me permette à un moment donné de libérer
>> la
>> mémoire et le résultat des requêtes en cache.







Avatar
Med Bouchenafa
>> Non, SQL SERVER NE SAIT PAS LIBERER DE LA MEMOIRE.




Restons calme l'ami. Si tu le dis si fort c'est que que tu dois avoir raison

Je te rassure je ne fais pas de production et je ne suis pas DBA
A force de m'être entendu dire que SQL Server n'était qu'un jouet, je m'y
suis fais.
Et cela fait un petit moment que je m'amuse bien avec.
A chacun ses caprices.

--
Bien cordialement
Med Bouchenafa

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

Non, SQL SERVER NE SAIT PAS LIBERER DE LA MEMOIRE.
sur quoi je me base sur l'expérience. tu prends n'importe quel DBA. il te
dira la même chose. Je je dis un vrai DBA. SQL Server est gourmand en
mémoire
lorsqu'il l'a prend il ne la rends à moins de relancer le service.
Il en libère mais très très très peu de l'ordre du 50 de Megas.
Dans la logique oui mais en production non.
En fait, tout est pris par le cache sql. Il met tout en cache pour que
cela
aille plus vite. Du coup il ne libère pas la mémoire dès qu'il y a un meg
de
libre. Sql server s'en empare pour du cache.

Tu dis dans ton post :
Un process système, le lazywriter, s'occupe continuellement de voir si
l'OS
a suffisamment de mémoire de disponible (entre 4 et 10 Mo)
Dès que la mémoire chute en-dessous de cette valeur, une partie de la
mémoire consommée par le BufferPool de SQL Server est libérée et est
rendue
à l'OS




Tu appelles cela suffisamment de memoire de libre entre 4 et 10 mo pour
l'OS.
Rassures moi tu ne fais pas de production!!! parce que avec moins de 10 mo
de libre tu ne vas pas loin. Ton serveur rame parceque ton OS passe son
temps
à paginer. Un OS serveur a besoin d'un minimum de 300 à 600 Mo de ram, à
lui
seul pour tourner. lorsqu'il tourne avec SQL server.
Ensuite, sql à besoin de moins de 100 pour tourner pour le noyau et enfin
le
reste Ram est utilisé pour le cache sql server.

Sans vouoir te vexer, même MS soft sait que la gestion mémoire de ses
produits n'est pas fameuses. Non pas parcequ'ils ne savent pas la gérer
chez
microsoft mais à force d'abuser du cache on finit par dégrader les perfs.

Par expérience, on redémarre régulièrment nos machines et nos serveurs
pour
vider la mémoire, le cache etc. pour avoir rarement des dégradations de
performances.

Il faut se baser sur des faits, sur la réalité en production. J'entends
bien
que microsoft ait créé un processus dont la responsabilité est de libérer
de
la mémoire. Sauf que lorsque Sql server prend une bonne partie de la ram
voire la casitotalité, lorsqu'il est en configuration par défaut, aucune
libération supérieur à 50 Mo n'est fait. Et 50 Mo pour gérer un serveur de
Prod ce n'est pas l'idéal.
Juste pour info. J'ai un serveur davec 4 Go de RAM. Ayant laisser la
config
par défaut sql server en a pris 3.7 GO ce qui a provoqué un ralentissement
très fort.
Depuis que je l'ai passé en memoire dynamique avec un maxi de 2/3 de la
RAM.
ça va beauoup mieux. je n'ai pas de soucis de perfs.
Par contre, la seule fois où j'ai constaté une libération de mémoire
cétaits
lorsqu'il ny'avait que 10% des utilisateurs de connecter sur le server
sql.
Cette libération n'a pas excéder les 50 Mo. Pourtant avec 3Go de Ram il y
a
de quoi libérer.

AB

"Med Bouchenafa" a écrit :

>>En fait, contrairement à ce qui a été répondu dans un post, sql server
>>ne
>>sait pas libérer de la RAM. Il prend ce qui est disponible et ne le
>>rend
>>pas
>>au système.

Sur quel critère, expérience ou fait tu te bases pour affirmer cela ?

SQL Server sait parfaitement liberer la mémoire et la rendre à l'OS
lorsque
celui-ci lui en fait la demande
Il est vrai que si SQL Server est configuré en memoire dynamique (valeur
par
défaut), il a tendance à consommer toute la mémoire mise à disposition.
Mais si l'OS ou une autre application nécessite de la mémoire, SQL Server
libère une partie de sa mémoire et la rend à l'OS
Un process système, le lazywriter, s'occupe continuellement de voir si
l'OS
a suffisamment de mémoire de disponible (entre 4 et 10 Mo)
Dès que la mémoire chute en-dessous de cette valeur, une partie de la
mémoire consommée par le BufferPool de SQL Server est libérée et est
rendue
à l'OS


--
Bien cordialement
Med Bouchenafa



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

> Bonjour,
> Ton problème du fait que la configuration de la mémoire maxi de ton
> server
> sql server est la même que celle de ton server windows.
> En fait, contrairement à ce qui a été répondu dans un post, sql server
> ne
> sait pas libérer de la RAM. Il prend ce qui est disponible et ne le
> rend
> pas
> au système.
> Si ta configuration mémoire est mal faite. Sql server prend l'ensemble
> de
> la
> RAM pour son cache et asphyxie l'OS. Le phénomène qui se produit est le
> suivant: Le serveur rame, semble avoir des millions de traitements mais
> en
> fait il passe son temps à attendre on doit avoir l'impression qu'il
> mouline
> dans le vide.
> Il perd son temps à parcourir tout le cache (1GO), je sais le cache
> c'est
> performant!, mais dans ce cas précis. Lorsque toute la RAM est allouée
> au
> serveur sql et très peu à l'OS voir pas du tout car sql server a tout
> alloué.
> Le système pagine et les perfs se dégradent.
>
> La solution consiste à dans au niveau propriétés du serveur sql, onglet
> mémoire. Passer la taille maxi de la RAM à 2/3 de la RAM de ton
> serveur.
> Tu
> as deux options pour la mémoire: Dynamique ou fixe.
> Opte pour la dynamque si tu veux que sql server libère de l'espace
> mémoire
> des 2/3 ram qui lui seront alloué.
> Si l'option fixe est mise en place, ton serveur ne libérera jamais de
> la
> ram. Il raffraichira le cache mais ça s'arrête là. Donc ne compte pas
> sur
> sql
> server pour qu'il te libère de la RAM. car dès qu'il a de l'espace
> mémoire
> de
> disponible, il utilise pour du cache. Donc, préfères une configuration
> manuelle que celle par défaut.
>
> AB
>
> Comme il a toute la RAM pleine de cache,
> Attendre quoi? le que l'OS ait des ressources pour répondre
>
> "fab111" a écrit :
>
>> Bonjour,
>>
>> Voilà mon pb. je dispose de plusieurs application web. sur un serveur
>> installé avec IIS5 et SQL 2000.
>> Mais une des applis apparement mal développée, exécute des requêtes
>> qui
>> ne
>> libére pas toutes la RAM après son exécution.
>> Existe t'il une fonction qui me permette à un moment donné de libérer
>> la
>> mémoire et le résultat des requêtes en cache.







Avatar
AB
Bonjour,

Mes propos n'ont pas vocations à te blesser ou à blesser qui que ce soit.
Quand je parle d'un vrai DBA. Je parle de quelqu'un qui fait de la
production qui suit sa réalité quotidienne. S'il a plusieurs processus, des
bases volumineux, etc... son expérience et son point de vue est différent est
meilleure que le notre. Je fais du devellopement mais également un peu
d'administration. Si nous rencontrons des prblèmes en production c'est qu'ils
existent. Nous les inventons pas.
En général, nous faisons le minimum, voire le maimum, avant de faire un post.

Je dis simplement avec insistance qu'il faut distinguer trois choses. La
première, ce que microsoft préconise est une chose. La seconde est ton
contexte de production. et la troisième est d'accèpter les points divergents.
même s'il est en opposition avec le votre.

Le premier point il est toujours appliqué par l'ensemble des dba. Mais ne
répond généralement pas à une problématique complexe. Nous savons tous que
tous les produits proposent certaines fonctionnalités mais lorsque nous les
mettons à rude épreuve, nous constatons des faiblesses de ces dernières.
Personne n'est parfais. Mais exposer des points de blocages cel ne peut
qu'aider à les solutionner. Et aider Microsoft à prendre en compte le
problème de ces clients et améliorer ainsi notre quotidien.

La seconde est le contexte de production. Nous n'avons pas toujours des
serveurs dédiés. Donc, plusieurs processus sont amenés à cohabiter ensemble.
Ce qui change notablement la donne.
Faire choabiter un IIS + Sql server avec aspnet 1.1. Ce n'est pas ce qu'il y
a de plus fameux. Mais le choix nous ne l'avons toujours pas.

Juste un exemple avec IIS et le process aspnet_wp.exe. Pour simplifier,
processus qui permet le traitement des pages aspnet avec le framework. Ce
processus est sensé également libérer de la mémoire avec son système de
garbage collector. Théoriquement, il doit libérer de la mémoire. Sauf qu'il
met pas mal de choses en cache. De ce fait, au bout d'un certains nombre de
traitements, ce processus s'accapare un bonne partie de la ram et ne la rend.
Il finit même par planter lorsqu'il atteint les 1 Go de RAM. Rassurez-vous il
est bien configuré. Ce fonctionnement est handicapant sur un IIS5. Microsoft
sans vraiment reonnaitre le problème a prévu un système de recylage dans son
IIS6 et de plafonner également la mémoire à ne pas dépasser. En résumé, ce
que nous constatons est que que les produits de Microsoft ont un problème de
libération mémoire. Que ce soit avec ses OS, sql server ou bien IIS encore le
processus aspnet. C'est fait et il fait le reconnaître. Cela permettra de
faire avancer les choses. C'est un point divergent qui me permet de rebondir
sur mon dernier point à savoir l'acceptation des divergences. Nous ne jouons
avec les choses nous les traitons de façon responsables. Exposer son point
divergent est responsable. La lègereté ne fait pas partie de notre quotidien.
Je parle de légereté car soutenir que 4 à 10 mo de ram est suffissament
disponible est léger. Il ne faut prendre cela pour une attaque. En situation
de prodution relativement intense est inconcevable voire perilleuse.

Si j'ai été incorrect ou blessant, je vous présente des excuses. Ce n'était
pas l'object de mon post. Par contre, il faut accèpter les points divergents.
cela y participe à faire avancer les choses.


Cordialement.
AB




"Med Bouchenafa" a écrit :

>> Non, SQL SERVER NE SAIT PAS LIBERER DE LA MEMOIRE.
Restons calme l'ami. Si tu le dis si fort c'est que que tu dois avoir raison

Je te rassure je ne fais pas de production et je ne suis pas DBA
A force de m'être entendu dire que SQL Server n'était qu'un jouet, je m'y
suis fais.
Et cela fait un petit moment que je m'amuse bien avec.
A chacun ses caprices.

--
Bien cordialement
Med Bouchenafa

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

> Non, SQL SERVER NE SAIT PAS LIBERER DE LA MEMOIRE.
> sur quoi je me base sur l'expérience. tu prends n'importe quel DBA. il te
> dira la même chose. Je je dis un vrai DBA. SQL Server est gourmand en
> mémoire
> lorsqu'il l'a prend il ne la rends à moins de relancer le service.
> Il en libère mais très très très peu de l'ordre du 50 de Megas.
> Dans la logique oui mais en production non.
> En fait, tout est pris par le cache sql. Il met tout en cache pour que
> cela
> aille plus vite. Du coup il ne libère pas la mémoire dès qu'il y a un meg
> de
> libre. Sql server s'en empare pour du cache.
>
> Tu dis dans ton post :
> Un process système, le lazywriter, s'occupe continuellement de voir si
> l'OS
>> a suffisamment de mémoire de disponible (entre 4 et 10 Mo)
>> Dès que la mémoire chute en-dessous de cette valeur, une partie de la
>> mémoire consommée par le BufferPool de SQL Server est libérée et est
>> rendue
>> à l'OS
>>
>
> Tu appelles cela suffisamment de memoire de libre entre 4 et 10 mo pour
> l'OS.
> Rassures moi tu ne fais pas de production!!! parce que avec moins de 10 mo
> de libre tu ne vas pas loin. Ton serveur rame parceque ton OS passe son
> temps
> à paginer. Un OS serveur a besoin d'un minimum de 300 à 600 Mo de ram, à
> lui
> seul pour tourner. lorsqu'il tourne avec SQL server.
> Ensuite, sql à besoin de moins de 100 pour tourner pour le noyau et enfin
> le
> reste Ram est utilisé pour le cache sql server.
>
> Sans vouoir te vexer, même MS soft sait que la gestion mémoire de ses
> produits n'est pas fameuses. Non pas parcequ'ils ne savent pas la gérer
> chez
> microsoft mais à force d'abuser du cache on finit par dégrader les perfs.
>
> Par expérience, on redémarre régulièrment nos machines et nos serveurs
> pour
> vider la mémoire, le cache etc. pour avoir rarement des dégradations de
> performances.
>
> Il faut se baser sur des faits, sur la réalité en production. J'entends
> bien
> que microsoft ait créé un processus dont la responsabilité est de libérer
> de
> la mémoire. Sauf que lorsque Sql server prend une bonne partie de la ram
> voire la casitotalité, lorsqu'il est en configuration par défaut, aucune
> libération supérieur à 50 Mo n'est fait. Et 50 Mo pour gérer un serveur de
> Prod ce n'est pas l'idéal.
> Juste pour info. J'ai un serveur davec 4 Go de RAM. Ayant laisser la
> config
> par défaut sql server en a pris 3.7 GO ce qui a provoqué un ralentissement
> très fort.
> Depuis que je l'ai passé en memoire dynamique avec un maxi de 2/3 de la
> RAM.
> ça va beauoup mieux. je n'ai pas de soucis de perfs.
> Par contre, la seule fois où j'ai constaté une libération de mémoire
> cétaits
> lorsqu'il ny'avait que 10% des utilisateurs de connecter sur le server
> sql.
> Cette libération n'a pas excéder les 50 Mo. Pourtant avec 3Go de Ram il y
> a
> de quoi libérer.
>
> AB
>
> "Med Bouchenafa" a écrit :
>
>> >>En fait, contrairement à ce qui a été répondu dans un post, sql server
>> >>ne
>> >>sait pas libérer de la RAM. Il prend ce qui est disponible et ne le
>> >>rend
>> >>pas
>> >>au système.
>>
>> Sur quel critère, expérience ou fait tu te bases pour affirmer cela ?
>>
>> SQL Server sait parfaitement liberer la mémoire et la rendre à l'OS
>> lorsque
>> celui-ci lui en fait la demande
>> Il est vrai que si SQL Server est configuré en memoire dynamique (valeur
>> par
>> défaut), il a tendance à consommer toute la mémoire mise à disposition.
>> Mais si l'OS ou une autre application nécessite de la mémoire, SQL Server
>> libère une partie de sa mémoire et la rend à l'OS
>> Un process système, le lazywriter, s'occupe continuellement de voir si
>> l'OS
>> a suffisamment de mémoire de disponible (entre 4 et 10 Mo)
>> Dès que la mémoire chute en-dessous de cette valeur, une partie de la
>> mémoire consommée par le BufferPool de SQL Server est libérée et est
>> rendue
>> à l'OS
>>
>>
>> --
>> Bien cordialement
>> Med Bouchenafa
>>
>>
>>
>> "AB" a écrit dans le message de news:
>>
>> > Bonjour,
>> > Ton problème du fait que la configuration de la mémoire maxi de ton
>> > server
>> > sql server est la même que celle de ton server windows.
>> > En fait, contrairement à ce qui a été répondu dans un post, sql server
>> > ne
>> > sait pas libérer de la RAM. Il prend ce qui est disponible et ne le
>> > rend
>> > pas
>> > au système.
>> > Si ta configuration mémoire est mal faite. Sql server prend l'ensemble
>> > de
>> > la
>> > RAM pour son cache et asphyxie l'OS. Le phénomène qui se produit est le
>> > suivant: Le serveur rame, semble avoir des millions de traitements mais
>> > en
>> > fait il passe son temps à attendre on doit avoir l'impression qu'il
>> > mouline
>> > dans le vide.
>> > Il perd son temps à parcourir tout le cache (1GO), je sais le cache
>> > c'est
>> > performant!, mais dans ce cas précis. Lorsque toute la RAM est allouée
>> > au
>> > serveur sql et très peu à l'OS voir pas du tout car sql server a tout
>> > alloué.
>> > Le système pagine et les perfs se dégradent.
>> >
>> > La solution consiste à dans au niveau propriétés du serveur sql, onglet
>> > mémoire. Passer la taille maxi de la RAM à 2/3 de la RAM de ton
>> > serveur.
>> > Tu
>> > as deux options pour la mémoire: Dynamique ou fixe.
>> > Opte pour la dynamque si tu veux que sql server libère de l'espace
>> > mémoire
>> > des 2/3 ram qui lui seront alloué.
>> > Si l'option fixe est mise en place, ton serveur ne libérera jamais de
>> > la
>> > ram. Il raffraichira le cache mais ça s'arrête là. Donc ne compte pas
>> > sur
>> > sql
>> > server pour qu'il te libère de la RAM. car dès qu'il a de l'espace
>> > mémoire
>> > de
>> > disponible, il utilise pour du cache. Donc, préfères une configuration
>> > manuelle que celle par défaut.
>> >
>> > AB
>> >
>> > Comme il a toute la RAM pleine de cache,
>> > Attendre quoi? le que l'OS ait des ressources pour répondre
>> >
>> > "fab111" a écrit :
>> >
>> >> Bonjour,
>> >>
>> >> Voilà mon pb. je dispose de plusieurs application web. sur un serveur
>> >> installé avec IIS5 et SQL 2000.
>> >> Mais une des applis apparement mal développée, exécute des requêtes
>> >> qui
>> >> ne
>> >> libére pas toutes la RAM après son exécution.
>> >> Existe t'il une fonction qui me permette à un moment donné de libérer
>> >> la
>> >> mémoire et le résultat des requêtes en cache.
>>
>>
>>





Avatar
AB
Bonjour,

L'instance de sql server ne prend pas beaucoup de mémoire. C'est le cache
utilisé par ce dernier qui la consomme. Sur les 3,7 go, l'instance de sql
server n'en prend qu'un centaine, voire moins. Par contre, le reste est
reservé au cache sql server.
Avec un outils, type dba artisan de embarcadero, nous remarquons bien qu'il
y a une utilsation excésive du cache par sql server.
Le rpcinqipe que vous décrivez est exactement ce qui se produit ici en
prodution. A savoir, lorsqu'on redemarre le server sql. La mémoire est au
minimum et il consomme toute celle de libre jusqu'à ne laisser que 5 mo de
ram de libre. Ensuite il swappe pour palier aux manques de méoire en
utilisant le fichier d'échange.
Lorsque l'OS a besoin de mémoire, il utilise la ram virtuelle. Sql server ne
libère pas de mémoire lorsqu'il l'utilise. L'OS doit se débrouiller autrement
en utilisant le fichier d'échange.
Sql server libère très peu de mémoire. Il ne la libère que lorsque
l'activité est en baisse d'une façon notable. Sinon, il a ses objets en cache
et il ne les libère jamais.
C'est quelques choses d'observable même sur mon poste de develeppement.
Portant je ne fais de la production. Avec un seuil de mémoire non plafonner
sql server prendre la casi totalité de la ram et asphyxie le poste de
developpement. Par contre en ajustant la mémoire miximale à 2/3 de la ram.
L'asphyxie n'est plus rencontrée. et un fonctionnement proche de la normale
est atteint.

Dons notre contexte de production, nous avons un IIS 5 qui tourne sur le
serveur de production. Nous ne pouvons pas faire autrement dans l'immédiat.
Un serveur dédié sera envisageable dans quelques mois.

La mémoire sur le serveur de production est bien fixée à 3Go. Le 1 Go c'est
pour l'OS et IIS.
En dessous de ce seuil, les performances se dégarent.

Merci pour votre aide à tous!

Cordialement
AB
"Sébastien GROSBOIS (Microsoft France)" a écrit :

Bonjour,

Par défaut, si le mode AWE n'est pas activé, SQL Server ne peut pas allouer
plus de 2Go de RAM (comme n'importe quel process Win32).
Si le mode /3GB est activé dans le boot.ini, il est possible pour SQL Server
d'adressé jusqu'à 3Go. Une instance SQL Server ne peut donc pas utiliser
3,7Go ; êtes vous sûr de vos
mesure ?
D'autre part le principe général (simplifié) de la gestion mémoire de SQL
Server est qu'il n'alloue de la mémoire que lorsqu'il en a besoin (ce qui
explique que lorsque l'on vient démarrer le service
et que l'on a précisé on a fixé 'min server memory' le process n'occupe
souvent pas tout de suite cette mémoire). D'autre part, SQL Server
consommera à terme toute la mémoire physique dispo jusqu'à environ 5Mo (ou
'max server memory' si celui ci est fixé) s'il estime que c'est nécessaire
et ne la libérera que lorsque l'OS aura besoin de mémoire (par exemple par
ce qu'un autre process a besoin mémoire) sinon il ne la liberera jamais. Si
un autre process a besoin de mémoire et que SQL Server aussi (dans le cadre
d'une forte activité par exemple) on peut observer des phénomène de pompage
(libération, réallocation), c'est pourquoi on préconise de ne pas faire
cohabiter une instance SQL avec une autre application consommatrice en
mémoire sur la même machine (ex : IIS, Exchange).
Sinon, vous avez toujours la possibilité de fixer une mémoire maximum pour
l'instance SQL si vous ne pouvez pas faire autrement que de partager votre
serveur avec d'autres applicatifs.

Cordialement


"AB" wrote in message
news:
> Non, SQL SERVER NE SAIT PAS LIBERER DE LA MEMOIRE.
> sur quoi je me base sur l'expérience. tu prends n'importe quel DBA. il te
> dira la même chose. Je je dis un vrai DBA. SQL Server est gourmand en
> mémoire
> lorsqu'il l'a prend il ne la rends à moins de relancer le service.
> Il en libère mais très très très peu de l'ordre du 50 de Megas.
> Dans la logique oui mais en production non.
> En fait, tout est pris par le cache sql. Il met tout en cache pour que
> cela
> aille plus vite. Du coup il ne libère pas la mémoire dès qu'il y a un meg
> de
> libre. Sql server s'en empare pour du cache.
>
> Tu dis dans ton post :
> Un process système, le lazywriter, s'occupe continuellement de voir si
> l'OS
>> a suffisamment de mémoire de disponible (entre 4 et 10 Mo)
>> Dès que la mémoire chute en-dessous de cette valeur, une partie de la
>> mémoire consommée par le BufferPool de SQL Server est libérée et est
>> rendue
>> à l'OS
>>
>
> Tu appelles cela suffisamment de memoire de libre entre 4 et 10 mo pour
> l'OS.
> Rassures moi tu ne fais pas de production!!! parce que avec moins de 10 mo
> de libre tu ne vas pas loin. Ton serveur rame parceque ton OS passe son
> temps
> à paginer. Un OS serveur a besoin d'un minimum de 300 à 600 Mo de ram, à
> lui
> seul pour tourner. lorsqu'il tourne avec SQL server.
> Ensuite, sql à besoin de moins de 100 pour tourner pour le noyau et enfin
> le
> reste Ram est utilisé pour le cache sql server.
>
> Sans vouoir te vexer, même MS soft sait que la gestion mémoire de ses
> produits n'est pas fameuses. Non pas parcequ'ils ne savent pas la gérer
> chez
> microsoft mais à force d'abuser du cache on finit par dégrader les perfs.
>
> Par expérience, on redémarre régulièrment nos machines et nos serveurs
> pour
> vider la mémoire, le cache etc. pour avoir rarement des dégradations de
> performances.
>
> Il faut se baser sur des faits, sur la réalité en production. J'entends
> bien
> que microsoft ait créé un processus dont la responsabilité est de libérer
> de
> la mémoire. Sauf que lorsque Sql server prend une bonne partie de la ram
> voire la casitotalité, lorsqu'il est en configuration par défaut, aucune
> libération supérieur à 50 Mo n'est fait. Et 50 Mo pour gérer un serveur de
> Prod ce n'est pas l'idéal.
> Juste pour info. J'ai un serveur davec 4 Go de RAM. Ayant laisser la
> config
> par défaut sql server en a pris 3.7 GO ce qui a provoqué un ralentissement
> très fort.
> Depuis que je l'ai passé en memoire dynamique avec un maxi de 2/3 de la
> RAM.
> ça va beauoup mieux. je n'ai pas de soucis de perfs.
> Par contre, la seule fois où j'ai constaté une libération de mémoire
> cétaits
> lorsqu'il ny'avait que 10% des utilisateurs de connecter sur le server
> sql.
> Cette libération n'a pas excéder les 50 Mo. Pourtant avec 3Go de Ram il y
> a
> de quoi libérer.
>
> AB
>
> "Med Bouchenafa" a écrit :
>
>> >>En fait, contrairement à ce qui a été répondu dans un post, sql server
>> >>ne
>> >>sait pas libérer de la RAM. Il prend ce qui est disponible et ne le
>> >>rend
>> >>pas
>> >>au système.
>>
>> Sur quel critère, expérience ou fait tu te bases pour affirmer cela ?
>>
>> SQL Server sait parfaitement liberer la mémoire et la rendre à l'OS
>> lorsque
>> celui-ci lui en fait la demande
>> Il est vrai que si SQL Server est configuré en memoire dynamique (valeur
>> par
>> défaut), il a tendance à consommer toute la mémoire mise à disposition.
>> Mais si l'OS ou une autre application nécessite de la mémoire, SQL Server
>> libère une partie de sa mémoire et la rend à l'OS
>> Un process système, le lazywriter, s'occupe continuellement de voir si
>> l'OS
>> a suffisamment de mémoire de disponible (entre 4 et 10 Mo)
>> Dès que la mémoire chute en-dessous de cette valeur, une partie de la
>> mémoire consommée par le BufferPool de SQL Server est libérée et est
>> rendue
>> à l'OS
>>
>>
>> --
>> Bien cordialement
>> Med Bouchenafa
>>
>>
>>
>> "AB" a écrit dans le message de news:
>>
>> > Bonjour,
>> > Ton problème du fait que la configuration de la mémoire maxi de ton
>> > server
>> > sql server est la même que celle de ton server windows.
>> > En fait, contrairement à ce qui a été répondu dans un post, sql server
>> > ne
>> > sait pas libérer de la RAM. Il prend ce qui est disponible et ne le
>> > rend
>> > pas
>> > au système.
>> > Si ta configuration mémoire est mal faite. Sql server prend l'ensemble
>> > de
>> > la
>> > RAM pour son cache et asphyxie l'OS. Le phénomène qui se produit est le
>> > suivant: Le serveur rame, semble avoir des millions de traitements mais
>> > en
>> > fait il passe son temps à attendre on doit avoir l'impression qu'il
>> > mouline
>> > dans le vide.
>> > Il perd son temps à parcourir tout le cache (1GO), je sais le cache
>> > c'est
>> > performant!, mais dans ce cas précis. Lorsque toute la RAM est allouée
>> > au
>> > serveur sql et très peu à l'OS voir pas du tout car sql server a tout
>> > alloué.
>> > Le système pagine et les perfs se dégradent.
>> >
>> > La solution consiste à dans au niveau propriétés du serveur sql, onglet
>> > mémoire. Passer la taille maxi de la RAM à 2/3 de la RAM de ton
>> > serveur.
>> > Tu
>> > as deux options pour la mémoire: Dynamique ou fixe.
>> > Opte pour la dynamque si tu veux que sql server libère de l'espace
>> > mémoire
>> > des 2/3 ram qui lui seront alloué.
>> > Si l'option fixe est mise en place, ton serveur ne libérera jamais de
>> > la
>> > ram. Il raffraichira le cache mais ça s'arrête là. Donc ne compte pas
>> > sur
>> > sql
>> > server pour qu'il te libère de la RAM. car dès qu'il a de l'espace
>> > mémoire
>> > de
>> > disponible, il utilise pour du cache. Donc, préfères une configuration
>> > manuelle que celle par défaut.
>> >
>> > AB
>> >
>> > Comme il a toute la RAM pleine de cache,
>> > Attendre quoi? le que l'OS ait des ressources pour répondre
>> >
>> > "fab111" a écrit :
>> >
>> >> Bonjour,
>> >>
>> >> Voilà mon pb. je dispose de plusieurs application web. sur un serveur
>> >> installé avec IIS5 et SQL 2000.
>> >> Mais une des applis apparement mal développée, exécute des requêtes
>> >> qui
>> >> ne
>> >> libére pas toutes la RAM après son exécution.
>> >> Existe t'il une fonction qui me permette à un moment donné de libérer
>> >> la
>> >> mémoire et le résultat des requêtes en cache.
>>
>>
>>





1 2