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.
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.
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.
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.
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" <fab111@discussions.microsoft.com> a écrit dans le message de news:
95AAC326-4E6F-463F-8CC9-21335C9483A4@microsoft.com...
> 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.
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.
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.
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" <fab111@discussions.microsoft.com> a écrit dans le message de
news:
95AAC326-4E6F-463F-8CC9-21335C9483A4@microsoft.com...
> 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.
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.
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.
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.
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.
>>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.
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.
>>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.
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.
>>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.
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.
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
>>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.
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
>>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" <AB@discussions.microsoft.com> a écrit dans le message de news:
68A7D4D6-72A6-4FB1-931E-C96E1654118B@microsoft.com...
> 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.
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
>>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.
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'OSa 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.
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" <AB@discussions.microsoft.com> a écrit dans le message de news:
68A7D4D6-72A6-4FB1-931E-C96E1654118B@microsoft.com...
> 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.
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'OSa 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.
>> Non, SQL SERVER NE SAIT PAS LIBERER DE LA MEMOIRE.
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'OSa 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.
>> Non, SQL SERVER NE SAIT PAS LIBERER DE LA MEMOIRE.
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" <AB@discussions.microsoft.com> a écrit dans le message de news:
68A7D4D6-72A6-4FB1-931E-C96E1654118B@microsoft.com...
> 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.
>> Non, SQL SERVER NE SAIT PAS LIBERER DE LA MEMOIRE.
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'OSa 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.
>> 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.
>>
>>
>>
>> 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" <AB@discussions.microsoft.com> a écrit dans le message de news:
25DD0FF1-201D-4F54-8915-2AD0E917B637@microsoft.com...
> 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" <AB@discussions.microsoft.com> a écrit dans le message de news:
>> 68A7D4D6-72A6-4FB1-931E-C96E1654118B@microsoft.com...
>> > 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.
>>
>>
>>
>> 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.
>>
>>
>>
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.
>>
>>
>>
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" <AB@discussions.microsoft.com> wrote in message
news:25DD0FF1-201D-4F54-8915-2AD0E917B637@microsoft.com...
> 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" <AB@discussions.microsoft.com> a écrit dans le message de news:
>> 68A7D4D6-72A6-4FB1-931E-C96E1654118B@microsoft.com...
>> > 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.
>>
>>
>>
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.
>>
>>
>>