Search This Blog

Friday, March 16, 2012

Why does Asterisk consume 100% CPU?

I don’t know :) (с)

    С помощью ps и pstack можно попытаться выяснить почему это происходит. На самом деле это может сработать с любой программой, не только с Asterisk-ом.
    Нам понадобится утилита pstack, утилита для отслеживание системных вызовов и отображение стека процесса, если ее в системе нет, нужно установить.
    Проверяем какой из тредов Asterisk-а взбесился.
        # ps -LlFm -p `pidof asterisk`
    В таблице в колонке “С” в % отображается нагрузка на процессор от каждого треда, LWP (LWP - light weight process number) колонка это id тредов. Теперь нам известно кто и сколько процессора кушает, теперь надо понять что он делает.
        # pstack `pidof asterisk` > /tmp/asterisk.stack.txt
    pstack запишет состояние стека процесса Asterisk-а в файл. После в файле можно найти интересующий нас тред по LWP.
    Возможно там будут подсказки для решения проблемы или хотя бы дополнительная информация для отправки на issues.asterisk.org

source

No comments:

Post a Comment