Привет!
Вчера ночью * свалился. В логе нашел такую ошибку перед тем как * упал.
В интернетах ничего не нашел по этому поводу.
Кто-нибудь сталкивался с таким?
[Apr 25 05:20:35] ERROR[872] cdr.c: Allocation Failure for a CDR!
При падении астериск, если запущен с опцией -g, должен создать core файл, по которому можно отследить точное место где астериск вывалился (не знаю есть ли ньюансы под фрей). Данная ошибка выдается тогда, когда calloc не смог выделить память, но в cdr.c везде данная ситуация проверяется.
Однако если память действительно кончилась и астериск не может её выделить, то упасть все может в любом другом месте.
сейчас top говорит примерно следующее:
last pid: 11662; load averages: 0.49, 0.49, 0.40 up 1+00:00:05 10:10:44
58 processes: 1 running, 57 sleeping
CPU: 0.3% user, 0.0% nice, 3.2% system, 1.3% interrupt, 95.2% idle
Mem: 49M Active, 573M Inact, 142M Wired, 112M Buf, 1176M Free
Swap: 8192M Total, 8192M Free
На сервере крутится только астериск и судя по логам заббикса, в момент падения астериска, действительно оперативки свободной было очень мало.
Эта проблема появляется из-за загруженности * я так понимаю?
это malloc ошибка. нет возможности выделить кусок памяти. как узнать: берешь сообщение и делаешь grep по исходникам астериска. ну тривиальное же действие. вот кусок кода:
x = ast_calloc(1, sizeof(*x));
if (!x)
ast_log(LOG_ERROR,"Allocation Failure for a CDR!\n");
перевожу: если адрес для новой записи 0 - значит не смогло выделить кусок, значит вывести ошибку.
Задан: 2011-04-26 16:27:41 +0400
Просмотрен: 374 раз
Обновлен: Apr 27 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.