Ситуация:
Есть набор программ - чёрных ящиков, крутящихся на сервере.
Раз в N месяцев ( N ~ 3-6 ) сервер виснет намертво.
Есть предположение, что вешает сервер одна из этих программ.
По косвенным признакам похоже, что у системы кончаются PIDы.
Чтобы доказать, что это именно так ( или опровергнуть ) хочется видеть динамику выдачи PIDов данным программам ( т. е. динамику вызовов forkов )
Как можно фиксировать в режиме реального времени ( т. е. не скриптом ps -aux под cronом :) ) факт выдачи PID конкретной программе ( факт вызова fork ) ?
Единственное что пока пришло в голову, это вот так:
xlib.c:
...
extern pid_t fork(void)
{
pid_t x;
x = syscall(SYS_fork);
printf("++++++ %d ++++++\n", (int) x);
....
здесь скорее всего dPID/dt анализироваться будет :)
....
return x;
}
ну и потом LD_PRELOAD=./xlib.so ./black_box
Какие ещё есть варианты или как этот усовершенствовать ( или исправить :) )?
Работать контрукция должна несколько месяцев и не требовать вмешательства человека.
Ответ на:
комментарий
от sf
Ответ на:
комментарий
от ksicom
Ответ на:
комментарий
от ksicom
Ответ на:
комментарий
от jek_
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум fork вызов не остановить? (2011)
- Форум Как можно перехватиь системный вызов ioctl (2007)
- Форум Fork() (2017)
- Форум Fork (2015)
- Форум fork() (2020)