Le 29 septembre 2014 15:26,  <jean-y...@lenhof.eu.org> a écrit :
> Le 2014-09-29 12:13, adrien nayrat a écrit :
>>
>> Bonjour,
>>
>> J'ai rencontré des erreurs Out Of memory sur un serveur de bdd, on
>> avait ces messages d'erreurs à la création de process :
>> Sep 29 10:42:26 hostname t of memory [13286]
>
>
>
> Je suppose qu'il faut lire "Out of memory" ici ?

Oui mais c'est cette ligne qui apparait dans les logs.

>>
>> La machine possède 20Go de ram et en a utilisé la moitié pour le cache.
>
>
> 32 bits ? 64 bits ?
> OS ? Version ?
> Version de kernel ?


64 Bits, Centos 6.5 kernel : 2.6.32-431.20.3.el6.x86_64
>
> ulimit -a sur l'utilisateur qui fait tourner postgresql donne quoi ?

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 159701
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1048560
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 65535
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
>
> Cdlt,
>
> JYL
>

Le 29 septembre 2014 15:12, Aurélien <footp...@gmail.com> a écrit :
>
>
> Hello,
>
> Et sans swap du tout ? Je pense que si tu commences à mettre ta bdd dans le
> swap, tu as un souci non ?
>
> Je sais qu'on a fini par dégager entièrement le swap de certaines machines
> (sql, varnish, etc), et que ça tourne très bien.
>
> Cordialement,
> --
> Aurélien Guillaume
>

Oui, en fait c'est un peu trompeur cette histoire de swap. Je pense
avoir trouvé.

Pour info, quand on fait un cat /proc/meminfo
Il y a ces deux lignes :
CommitLimit:    28887044 kB
Committed_AS:   24921056 kB

Elles indiquent la quantité de mémoire allouable (CommitLimit en gros
: RAM + SWAP)[1]  et la quantité allouée (Committed_AS) .
Vu qu'on a interdit la sur-allocation (overcommit=2) Committed_AS ne
peut être supérieur à CommitLimit.[2]
Quand on fait un free -m, c'est assez trompeur, la commande indique la
mémoire utilisée et non la mémoire allouée.

Sur une même machine au même moment :
free -m
             total       used       free     shared    buffers     cached
Mem:         24086      19908       4177          0        227       8021
-/+ buffers/cache:      11660      12426
Swap:         5327          0       5327

 cat /proc/meminfo
CommitLimit:    28887044 kB
Committed_AS:   25343012 kB

On pense avoir 12Go de libre alors qu'on a 28887044 -25343012 => 3Go de libre!

La solution serait soit d'augmenter la RAM de la machine soit
d'augmenter la swap même si elle ne sera jamais utilisée.
On va revoir quelques check sur notre nagios!
Merci pour vos retours

[1] : 
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/proc.txt?id=HEAD#n851
[2] : 
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/proc.txt?id=HEAD#n864
_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/

Répondre à