У меня есть процесс демона python2.7 с помощью модуля из http://www.jejik.com/files/examples/daemon.pyпитон демон убил (ядро?)
Процесс тяжелого один с использованием оперативной памяти около 40 ГБ и 9 дочерних потоков. Сервер использует RHEL 6.3 с 192 ГБ оперативной памяти и достаточную мощность процессора.
После запуска процесс длится около 3-7 часов, но затем он был убит кем-то, может быть ядром. Но я не мог найти никаких советов в dmesg и журнале ядра (который я активировал вручную), там нет. Когда я не начинаю в качестве демона, я просто получил сообщение в терминале: «убил».
следующих меры предосторожности был сделано:
- сброса счета ООМА в/Proc // oom_score_adj так что ОАЯ убийца не выбирает процесс, когда вид ресурсов
- растут все rlimits (что может быть увеличена) до максимального
- установить процесс хороший/приоритет выше (PRIO -15)
Эта проблема уже существует, прежде чем применять эти меры предосторожности, чтобы они не повторно точный удар для убийцы
У меня также есть механизм, позволяющий поймать все исключения, STDERR, STDOUT и записывать все в файл с повернутым логом. Но перед самым процессом не было ничего интересного.
Модули, используемые в процессе среди других: oracle_cx, ibm_db, suds, wsgi_utils. Но все они всегда записывают журналы при возникновении ошибок.
Кто-нибудь знает, как отследить убийство? Кто и почему?
Спасибо заранее
Вы включили coredump, чтобы увидеть, если вы получаете свалку при убийстве? – Mansour
Нет. Проблема в том, что мы используем SSD с объемом около 128 ГБ, и для ядра дампа недостаточно свободного места, когда процесс имел 40 ГБ оперативной памяти. –
Учитывая вашу большую ОЗУ и предполагая, что ваш процесс не мгновенно заполнит все (что заставляет ядро его убить), вы можете сохранить coredump в ОЗУ (через tmpfs). – Mansour