понедельник, 14 апреля 2014 г.

Очистка оперативной памяти от кэша в Linux

При частых операциях с файлами, особенно с большими, Linux кеширует эти самые файлы в оперативную память. В принципе, в этом нет ничего страшного, потому что как только, занятая закешированными файлами, оперативная память понадобится ядру, она будет частично освобождена для более приоритетной задачи. Однако, например, когда сервер 1с выполняет операции с "объемным" набором данных, этого высвобождения памяти не происходит и сервер "ложится" по причине отсутствия оперативной памяти.
Для того, чтобы посмотреть сколько оперативной памяти занято и сколько закешировано в данный момент, можно воспользоваться командой free (параметр "-g" означает отображать в гигабайтах, "-m" соответственно в мегабайтах).


$free -g
                               total       used       free     shared    buffers     cached
Mem:                            7          7          0          0          0          5
-/+ buffers/cache:          1          6
Swap:                           5          0          5


$free -m
                              total       used       free     shared    buffers     cached
Mem:                     8063       7616        447          0        283       5414
-/+ buffers/cache:    1918       6145
Swap:                    5723         52       5671

Как видно из выхлопа, откешировано у нас аж 5 Гб. Чтобы освободить память от кеша, можно выполнить команду:

#echo 3 > /proc/sys/vm/drop_caches

Если такая ситуация происходит довольно часто,  можно выполнять данную команду по cron`y

Комментариев нет:

Отправить комментарий