У меня есть скрипт, который я запускаю как задание cron каждые X минут.
Он запускается на VPS с использованием Apache, Centos, Maria DB 10.2, 6 ядер и 8 ГБ оперативной памяти.
Я применил механизм, предотвращающий повторный запуск сценария, если текущий запуск еще не завершен sh.
Кажется, он работает нормально примерно в 99% случаев.
Однако, случайным образом, иногда сценарий просто «зависает». Файл журнала, создаваемый сценарием, либо остановится на один момент раньше EOE, либо файл журнала 0 байтов будет создан без заполнения. Нет журналов ошибок и нет зарегистрированных MySQL ошибок.
Сегодня я включил mysqlbinlog
log и увидел, что в ту самую секунду, когда журнал выполнения скрипта остановился, скрипт делал ~ 290 Вставок в две таблицы БД, одна таблица имеет ~ 40 столбцов, а другая ~ 85 столбцов.
Но это нормальное поведение для сценариев.
Я консультировался с несколькими разработчиками, и ни один из у них было четкое представление о том, что может происходить. Мне просто предложили, что, возможно, оперативной памяти недостаточно для сценария. Однако я не знаю, имеет ли это смысл, поскольку в большинстве случаев сценарий успешно завершает работу sh, и он не сообщает о проблеме с памятью, он просто зависает.
Можете ли вы предложить способ отладить это?