При переходе с Windows на Linux администраторы 1С часто сталкиваются с пугающей картиной: оперативная память быстро «исчезает», а система начинает использовать файл подкачки (swap) даже при наличии свободных ресурсов. В этой статье мы подробно разберем, почему это происходит, и выясним, какие настройки помогут сделать работу системы стабильной и быстрой.
В операционных системах семейства Linux реализован принцип: «Свободная память — это бесполезная память». Разберем по шагам, что происходит внутри системы. Когда установленные с помощью скриптов 1C:Предприятие или PostgreSQL считывают данные с диска, ядро Linux не просто отдает их приложению, но и сохраняет в оперативной памяти в виде Disk Cache (Page Cache).
Проанализируем ситуацию: если вы запустите команду vmstat или free, вы увидите, что колонка free постоянно уменьшается. Это нормальное поведение. Система резервирует этот объем, чтобы при повторном запросе выдать данные мгновенно, не обращаясь к медленному диску.
Важный момент: ориентироваться нужно не на free, а на показатель available. Это именно тот объем памяти, который система готова моментально высвободить из кэша и отдать вашим процессам (rphost или postgres).
Выясним причину появления значений в колонке swpd. В Linux за это отвечает параметр vm.swappiness. По умолчанию он часто равен 60. Это означает, что система довольно агрессивно вытесняет неиспользуемые страницы памяти на диск, чтобы освободить больше места под дисковый кэш.
Рассмотрим алгоритм LRU (Least Recently Used): если в памяти находятся данные, к которым долго никто не обращался (например, куски кода спящих сессий 1С), ядро предпочтет отправить их в swap. Почему же swap не «обнуляется» сам? Linux экономит ресурсы: если данные в подкачке никому не нужны прямо сейчас, система не будет тратить время на их обратное чтение в ОЗУ, даже если там появилось место.
Рекомендация: для высоконагруженных баз данных 1С стоит снизить интенсивность использования подкачки. Для этого установим параметр:
vm.swappiness = 10
Это заставит систему до последнего держать активные данные в физической памяти.
Проанализируем дополнительные механизмы, которые помогут ускорить работу связки 1С и PostgreSQL:
Transparent Huge Pages (THP). В режиме always он может приводить к деградации производительности («фризам») из-за неэффективного выделения больших блоков памяти под мелкие запросы базы данных.zswap перехватывает ее, сжимает в оперативной памяти и оставляет там. Это на порядки быстрее, чем запись на SSD, и существенно продлевает жизнь вашим накопителям.OOM Killer завершить процесс базы данных.Для качественного анализа состояния сервера вместо стандартного vmstat рассмотрим использование более наглядных инструментов:
htop: в нем наглядно видно разделение памяти на Shared, Cache и Buffer (обычно выделено разными цветами).atop: этот инструмент позволяет просматривать историю нагрузки. Если ночью база «тормозила», мы сможем увидеть, какой именно процесс (например, фоновое задание 1С) вызвал всплеск потребления памяти.Подведем итог: использование памяти в Linux — это сложный, но эффективный процесс. Не стоит пугаться низкого значения free или небольшого объема swap. Главное — следить за тем, чтобы не было активного обмена с диском (параметры si и so в vmstat должны быть близки к нулю) и правильно настроить лимиты потребления ресурсов самими приложениями.