LINUX.ORG.RU
ФорумAdmin

Как определить почему падает сервис

 


0

1

systemctl status http
5h 49min ago

Утром проверяю, перезагрузился 5 часов назад. Беда беда. До этого работал пару дней.

Смотрю логи.

journalctl -u http --grep "Stating HTTP" 
...00:27:39... Stating HTTP...


Грепаю снова по этому вмемени уже
journalctl -u http --grep "00:27:39" 
...00:27:39... Stating HTTP...
journalctl -u http --grep "00:27:38" 


Ничего не нашел, никаких CORE, segfault и прочего кошмара. Все ровно ровно...и...Stating HTTP...

journalctl -k
-- No entries --


Где ещё что посмотреть можно? Причина перезагрузки? Сама машина uptime 40 дней.

/var/lib/systemd/coredump пусто
/usr/local/myservice-bin -пусто

core нет нигде

★★★★

Последнее исправление: gobot (всего исправлений: 2)

Может, «Starting»? И не лучше отбирать по приоритету, а не грепать? И, возможно, httpd, а не http? И если да, то apache и nginx пишут свои логи по умолчанию в файлы.

anonymous
()
Ответ на: комментарий от ALiEN175

О, вот так нашлось, а через grep почему то нет. А мне лень было вводить это длинные параметры, а оказывается вот оно как.

==476688==ERROR: AddressSanitizer: heap-use-after-free on address 0x51d000079590 at pc 0x56436d7ef106 bp 0x7053b781a840 sp 0x7053b7819fe8
READ of size 13 at 0x51d000079590 thread T1
AddressSanitizer:DEADLYSIGNAL
AddressSanitizer: nested bug in the same thread, aborting.


ВотЪ. Делааа.

gobot ★★★★
() автор топика
Ответ на: комментарий от ALiEN175

Медиа сервис, там и http есть и процессинг rtmp. Проект достаточно старый, лет 10 точно. Разрабу конечно писал, да и ошибка эта гуглилась у другого чела пару лет назад, но... ничего не нарыл пока. Дебажить это капец. Всякие strace делать эээ...

gobot ★★★★
() автор топика
Ответ на: комментарий от ALiEN175

Делает китаец(ы), вроде умный и дети есть, старые версии работали годами, а тут 5...STABLE...ей год уже. Есть 6-dev версия. Ее собрать если... Но опять же угадывать билды эээ

gobot ★★★★
() автор топика
Ответ на: комментарий от ALiEN175

Нет ну я понимаю, все ошибка В КОДЕ. Но ведь происходит это из-за ЧЕГО-то. Возможно такое срабатывает при определенных, возможно редких, ситуациях. Та же эта АПП посылает ещё хуки по http - на сторонний сервер. Ну и от клиентов принимает разные данные.

А возможно ли как то собрать чтобы можно было посмотреть трасировку на строчки исходниках?

gobot ★★★★
() автор топика
Ответ на: комментарий от alysnix

На Ц написан. Код вообще хороший, даже на мой взгляд, не очень опытного Ц-кодера. Он компактный, чисто исходники(без 3rdparty) весят 5МГ. Весь код лежит в 6 папках (271 файл чистого Ц++). Собирается очень быстро, где то за минуты 2. Раньше более старые билды работали годами на более старых серверах. А модифицировать код конечно можно (SPDX-License-Identifier: MIT ) и нужно. Вот только дебажить его неохота, ошибка пока не локализована, непонятно из-за чего она всплывает...

код очевидно кривой. и искать надо место, где он кривой.

Ну а какой код идеально ровный? Что значит кривой в данном контексте?

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

pc 0x56436d7ef106

ну вот оно дало адрес команды где упало. надо найти, где это в тексте, и смотреть вокруг.

важно найти точку в которой падает, а потом уже дальше разбираться.

что-то с многопотоком скорей всего, если падает так редко (работало двое суток?). нет такого что падает быстро при высокой нагрузке? а при слабой - стоит долго?

alysnix ★★★
()
Ответ на: комментарий от gobot

расширяем боротьбу. я правда по с++. но с си скорей всего аналогично.

если бинарники делаешь сам - собери в отладочном режиме с максимальным количеством полезных опций, типа -Wall -Wextra и так далее.

Потом надо проанализировать мессаги, что выскочат при сборке.

Затем запустить сервиc(собранный с отладочной инфой) под отладчиком gdb, тогда точка отказа найдется легко. Главное чтобы сервис упал. Если можно, нагрузить его по максимуму.

Ну это из общих соображений, вне каких-то знаний о сервисе вообще.

карочи. первая задача - найти место в коде, где падает. вторая задача(в принципе необязательная, если ты не разраб) - статически проверить код на всякие пороки. если пороков много и они страшненькие - писать разрабу, чтобы он включил правильные опции и собирал свои поделия именно с ними…. я так заставил несколько лет назад разрабов wxWidgets включить правильные опции :)

alysnix ★★★
()
Последнее исправление: alysnix (всего исправлений: 1)