Инструменты пользователя

Инструменты сайта

Перевод этой страницы:

ru:faq

Что делать если accel-ppp периодически падает?

Собираем accel-ppp с опцией -DCMAKE_BUILD_TYPE=Debug указывающей, что сборка должна включать отладочную информацию, а так же -DMEMDEBUG=TRUE для выявления утечки памяти. В консоли выполняем ulimit -c unlimited разрешая создавать core файлы без ограничения по размеру. Редактируем /etc/sysctl.conf добавляя параметры

kernel.core_uses_pid = 1
kernel.core_pattern = /root/core-%e-%p

Применяем sysctl -p

Выполняем для применения параметров.

ulimit -c unlimited

Редактируем /etc/security/limits.conf добавляем следующую строку, для применения параметров после перезагрузки ОС.

*  soft  core  unlimited

Для того, что бы убедиться в правильности проделанных действий, рекомендуется скомпилировать следующий код с заведомо допущенной ошибкой. Создаем file.c со следующим содержимым

int main() {
  *(char *)0 = 0;
  return 0;
}

Компилируем

gcc file.c

Выполняем ./a.out

Выполнив команду dmesg, должны увидеть информацию о segfault. Наличие core dump файла в директории /root должно говорить о правильности выполненных действий.

Также не стоит забывать при отладке о важности детального логирования и указывать verbose=1 в секциях типы подключений и модулей которые используются.

[ipoe]
verbose=1

[pptp]
verbose=1

[log]
log-debug=/var/log/accel-ppp/debug.log
level=5

How to rotate logs ?

Для этого вы можете использовать системную утилиту logrotate. Создайте файл /etc/logrotate.d следующего содержания.

/var/log/accel-ppp/*.log {
        missingok
        sharedscripts
        postrotate
                test -r /var/run/accel-pppd.pid && kill -HUP `cat /var/run/accel-pppd.pid`
        endscript
}

I don't see pppd processes, how to manually terminate session ?

Yes, in fact accel-ppp doesn't use pppd because it has its own ppp implementation.
To terminate session you may use three methods:

1. Use cli (telnet or tcp):

  By default telnet listens connections on 2000 port and tcp on 2001 port.
$ telnet 127.0.0.1 2000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
accel-ppp version 1.5.0
accel-ppp# terminate if ppp0

or

$ echo 'terminate if ppp0' | nc -q0 127.0.0.1 2001

There are also other criterias to select session(s), use help cli command to get more information.

2. Use radius Disconnect-Message:

$ echo 'NAS-Port=0' | radclient 127.0.0.1:3799 disconnect testing123
Received response ID 170, code 41, length = 20

and you can control it in logs:

[2012-01-21|16:48:55]:  info: ppp0: recv [RADIUS|Disconnect-Request id=aa <NAS-Port 0>]
[2012-01-21|16:48:55]:  info: ppp0: send [RADIUS|Disconnect-ACK id=aa]

3. Use snmp:

$ snmpset -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::termByIfName.0 = ppp0

For more information visit SNMP page.

ru/faq.txt · Последние изменения: 2019/02/09 15:26 — dimka88