172 похожих чатов

Привет, ребят а поделитесь мнением, простыми словами над такой ситуацией:


Есть БД (postgres 11), в ней таблица с порядка 140 млн объектов + вторая таблица (fk) с 400 млн объектов (аттрибуты к первой таблице).
Периодически нужно обновлять данные. Обновление происходит с помощью insert on conflict update, данных в обновлениях до 10 млн
Процесс идет норм(с точки зрения работы программы), но приходят аллерты что swap на сервере заполнен на 99%(+-).
Куда в таких случаях двигаются - забить, уменьшить нагрузку, поковырять настройки? Вообще нужно на такое обращать внимание, черевато ли чем-нибудь?

12 ответов

9 просмотров

Для начала -- запустить free в такой момент, посмотреть что там твоя мониторилка имеет в виду под "swap забит на 99%". Ну, то есть если там 2/3 памяти buffers/cache -- то это какбы нормально, ненужная хрень вытеснена в своп, память забита текущими данными. Если жэ при этом buffers/cache 15% от памяти -- то повод задуматься, что виртуальной памяти могло бы быть и побольшэ.

Ivan Alshevskiy
Выходит все ок?

Вполне цивилизованно. То есть дёргать ничего не требутся. С другой стороны -- а чего его жалеть, можэт вкрячить классическое 2xRAM (ну или хотя бы 1xRAM) и не париться с этим на будущее (когда места в памяти станет чуть-чуть меньшэ)?

Ivan-Alshevskiy Автор вопроса
Ilya Anfimov
Вполне цивилизованно. То есть дёргать ничего не тр...

Насчет изменений тут я мало что могу поделать, этим заведуют админы. С моей точки зрения все было ок, но сказали что это очень не хорошо. Решил узнать мнение третей стороны. В любом случае ребята будут контролировать, за ответы спасибо

Ivan Alshevskiy
Насчет изменений тут я мало что могу поделать, эти...

Если им не нравится -- пусть увеличат, да. Им жэ не нравится? Ну, вот и. Я бы тожэ увеличил -- именно про запас.

Ivan Alshevskiy
Насчет изменений тут я мало что могу поделать, эти...

То есть смотри -- линуксу в среднем полезно, когда всякое неиспользуемое, но что нельзя просто выкинуть из памяти -- выкидывается из памяти в своп. А в память грузятся дисковые кэшы всякие, которые система считает, что нужнее того, что выкинуто. Потому в принцыпе неплохо, когда место в свопе есть, и если приходит кто-то жырные, но редкоиспользуемые -- то его вытесняют. Потому, кстати, линукс без свопа особенно не советуют (ну, по крайней мере когда он на bare metal, в виртуалках там бывает, что можэт хост не хужэ всё это отрабатывать). Разве что знаешь, что делаешь во всяких встраиваемых системах. С другой стороны -- ты всё равно не сможэшь меньшэ гигабайта всякого кода и библиотек держать в памяти на современной системе... Так что бороться за то, чтобы что-то сейчас существенно изменилось -- явно не обязательно. С третьей стороны -- времена меняются, приползёт ещё какой-нибудь жырный appserver, который хранит в себе много лишнего -- а его, если что, и вытеснить некуда, будет висеть своими лишними частями RAM занимать.

Какое значение vm.swappiness?

Ivan-Alshevskiy Автор вопроса
Konstantin Zaitsev
Какое значение vm.swappiness?

не уверен, но скорее всего стандартное.

Ivan Alshevskiy
не уверен, но скорее всего стандартное.

Вот бы я помнил )))) завтра посмотрите

Ivan Alshevskiy
Выходит все ок?

Available сильно меньше, чем buf/cache. Проверь, что у тебя tmpfs какая-нибудь мусором не забита.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта