Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline amdx  
#1 Оставлено : 9 марта 2017 г. 9:52:03(UTC)
amdx

Статус: Новичок

Группы: Участники
Зарегистрирован: 09.03.2017(UTC)
Сообщений: 2
Российская Федерация

Неожиданно на продакше-кластере WildFly стало падать приложение J2EE примерно в одно и то же время утром.

Цитата:

root@_________:/var/log# uname -a
Linux _________ 3.19.0-58-generic #64~14.04.1-Ubuntu SMP Fri Mar 18 19:05:43 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux


Данные мониторинга показали, что в районе 6.30 утра свободная системная память начинает утекать, это продолжается, пока не закончится вся системная память и своп, после этого память разом освобождается и все работает штатно. Наше приложение падало с ожидаемой ошибкой при попытке выделить памяти из heap. Но поскольку приложение стабильно работает на полусотне серверов, стали копать вокруг.

На одном из серверов в kern.log на момент резкого освобождения памяти увидели вот это:
Цитата:

Mar 7 08:35:14 cons-app1 kernel: [6410120.774745] Out of memory: Kill process 21061 (lsof) score 545 or sacrifice child
Mar 7 08:35:14 cons-app1 kernel: [6410120.775129] Killed process 21061 (lsof) total-vm:29948712kB, anon-rss:27045620kB, file-rss:4kB


Так как начало процесса отъедания системной памяти совпало с запуском суточного крона, копали скрипты крона.

Из всех скриптов в /etc lsof использует только /etc/init.d/cprocsp, который запускается из скрипта /etc/cron.daily/cprocsp.

Отключение /etc/cron.daily/cprocsp на одном из серверов показало, что теперь проблемы с памятью не возникает.
Offline Русев Андрей  
#2 Оставлено : 9 марта 2017 г. 21:46:35(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,272

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 446 раз в 325 постах
Добрый вечер.
А на этом сервере lsof вообще можно запустить, так чтобы ОЗУ не закончилась? Что возвращают
Код:
lsof|wc -l
lsof -F n|wc -l
Официальная техподдержка. Официальная база знаний.
Offline amdx  
#3 Оставлено : 10 марта 2017 г. 10:14:38(UTC)
amdx

Статус: Новичок

Группы: Участники
Зарегистрирован: 09.03.2017(UTC)
Сообщений: 2
Российская Федерация

Очевидно, что нет. Поэтому скрипт и падает. Но зачем так делать? lsof показывает все сокеты, пайпы и файлы, а их на продакшене несколько тысяч. ulimit -n у нас по умолчанию 65500.
Offline Русев Андрей  
#4 Оставлено : 10 марта 2017 г. 15:09:51(UTC)
Русев Андрей

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,272

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 446 раз в 325 постах
Мне не очевидно. Вы не могли бы это явно проверить и прислать вывод указанных мной команд?
Официальная техподдержка. Официальная база знаний.
Offline Raian13  
#5 Оставлено : 10 июля 2018 г. 12:11:25(UTC)
Raian13

Статус: Новичок

Группы: Участники
Зарегистрирован: 10.07.2018(UTC)
Сообщений: 1
Российская Федерация

На сервере, где крутится хорошо нагруженное Java приложение, такой вот lsof выедает около 21 Гб памяти, памяти больше не остается и Linux вызывает OOMkiller. Который убивает то, что сочтет приоритетней в данный момент - может, lsof, а может, процесс Java.

Особенно хорош совет "сделать это" (= попробовать уронить production) дважды - сначала через lsof , затем через lsof с разделителем.

Насколько я понимаю логику этого куска:
Цитата:
# get csp opened files
lsof_list=`lsof -F n|grep "/var/opt/cprocsp/tmp"|sed -n 's#^n\(/var/opt/cprocsp.*\)#\1#p'`

вместо
Код:
lsof -F n
можно использовать
Код:
lsof -F n -x +D /var/opt/cprocsp
что на два порядка уменьшает время выполнения и на 3 порядка - объем используемой при этом памяти. По крайней мере, на наших тестовых системах получается так.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.