Есть БД (postgres 11), в ней таблица с порядка 140 млн объектов + вторая таблица (fk) с 400 млн объектов (аттрибуты к первой таблице).
Периодически нужно обновлять данные. Обновление происходит с помощью insert on conflict update, данных в обновлениях до 10 млн
Процесс идет норм(с точки зрения работы программы), но приходят аллерты что swap на сервере заполнен на 99%(+-).
Куда в таких случаях двигаются - забить, уменьшить нагрузку, поковырять настройки? Вообще нужно на такое обращать внимание, черевато ли чем-нибудь?
Для начала -- запустить free в такой момент, посмотреть что там твоя мониторилка имеет в виду под "swap забит на 99%". Ну, то есть если там 2/3 памяти buffers/cache -- то это какбы нормально, ненужная хрень вытеснена в своп, память забита текущими данными. Если жэ при этом buffers/cache 15% от памяти -- то повод задуматься, что виртуальной памяти могло бы быть и побольшэ.
Вполне цивилизованно. То есть дёргать ничего не требутся. С другой стороны -- а чего его жалеть, можэт вкрячить классическое 2xRAM (ну или хотя бы 1xRAM) и не париться с этим на будущее (когда места в памяти станет чуть-чуть меньшэ)?
Насчет изменений тут я мало что могу поделать, этим заведуют админы. С моей точки зрения все было ок, но сказали что это очень не хорошо. Решил узнать мнение третей стороны. В любом случае ребята будут контролировать, за ответы спасибо
Если им не нравится -- пусть увеличат, да. Им жэ не нравится? Ну, вот и. Я бы тожэ увеличил -- именно про запас.
То есть смотри -- линуксу в среднем полезно, когда всякое неиспользуемое, но что нельзя просто выкинуть из памяти -- выкидывается из памяти в своп. А в память грузятся дисковые кэшы всякие, которые система считает, что нужнее того, что выкинуто. Потому в принцыпе неплохо, когда место в свопе есть, и если приходит кто-то жырные, но редкоиспользуемые -- то его вытесняют. Потому, кстати, линукс без свопа особенно не советуют (ну, по крайней мере когда он на bare metal, в виртуалках там бывает, что можэт хост не хужэ всё это отрабатывать). Разве что знаешь, что делаешь во всяких встраиваемых системах. С другой стороны -- ты всё равно не сможэшь меньшэ гигабайта всякого кода и библиотек держать в памяти на современной системе... Так что бороться за то, чтобы что-то сейчас существенно изменилось -- явно не обязательно. С третьей стороны -- времена меняются, приползёт ещё какой-нибудь жырный appserver, который хранит в себе много лишнего -- а его, если что, и вытеснить некуда, будет висеть своими лишними частями RAM занимать.
Какое значение vm.swappiness?
не уверен, но скорее всего стандартное.
Вот бы я помнил )))) завтра посмотрите
vm.swappiness = 60
Available сильно меньше, чем buf/cache. Проверь, что у тебя tmpfs какая-нибудь мусором не забита.
Обсуждают сегодня