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

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

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

ru:faq

Содержание

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

Собираем accel-ppp с опцией -DCMAKE_BUILD_TYPE=Debug и -DCMAKE_C_FLAGS='-g -O0' указывающей, что сборка должна включать отладочную информацию, а так же -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

Run debug mode accel-ppp | Запустить accel-ppp в режиме отладки

#gdb –args /usr/sbin/accel-pppd -c /etc/accel-ppp.conf -p /var/run/accel-ppp.pid

$run

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.

Совет по оптимизации системы

Выключение этих опций позволит менее нагружать систему ненужной работой. Добавить в /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="crashkernel=128M intel_idle.max_cstate=0 processor.max_cstate=1 ixgbe.allow_unsupportd_sfp=1 quiet consoleblank=0 biosdevname=1 audit=0 noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off mitigations=off pcie_aspm=off"

после правки обязательно сделать

#sudo update-grub

P.S. Внимание в KVM Proxmox наличие параметра idle=poll дает 100% загрузку процессора
P.S. If use idle=poll in Proxmox KVM cpu usage 100%

Принудительное распределение по ядрам

принудительное распределение по ядрам скрипт идет в комплекте ixgbe драйверов

#/etc/bin/set_irq_affinity.sh -x 0-1 eth0
#/etc/bin/set_irq_affinity.sh -x 2-3 eth1

$ cat /proc/interrupts

           CPU0       CPU1       CPU2       CPU3

 57:  609661406          0          0          0   PCI-MSI-edge      eth0-TxRx-0
 58:         92 4081616515          0          0   PCI-MSI-edge      eth0-TxRx-1
 59:        400          0          0          0   PCI-MSI-edge      eth0
 60:        905          0  897113437          0   PCI-MSI-edge      eth1-TxRx-0
 61:       1390          0          0  892591683   PCI-MSI-edge      eth1-TxRx-1

Посмотреть версию драйвера и прошивки сетевой карты

# ethtool -i eth0

driver: ixgbevf
version: 4.3.6
firmware-version:
bus-info: 0000:01:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no

Посмотреть детально что именно нагружает систему

в Debian установить

#apt-get install linux-tools

В Debian 10 необходимо указывать версию загруженного ядра

#apt-get install linux-tools-5.3

# perf top

  13,81%  [kernel]            [k] __do_softirq
  12,32%  libzebra.so.0.0.0   [.] if_lookup_by_index
   5,43%  [kernel]            [k] fib_table_lookup
   2,59%  [kernel]            [k] _raw_spin_lock
   2,50%  [kernel]            [k] ixgbevf_clean_rx_irq
   2,21%  [kernel]            [k] _raw_spin_unlock_irqrestore
   1,60%  [kernel]            [k] ixgbevf_xmit_frame
   1,47%  [kernel]            [k] netflow_target

Использовать группу IP для ната

iptables -t nat -A POSTROUTING -s 10.0.0.0/16 -o iface -j SNAT –to-source x.x.x.82-x.x.x.97 –persistent

Посмотреть включен ли forwarding

cat /etc/sysctl.conf | grep forward

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
# Uncomment the next line to enable packet forwarding for IPv6
net.ipv6.conf.all.forwarding=1

# sysctl net.ipv4.ip_forward

net.ipv4.ip_forward = 1

Модуль ipoe загружен, что-то нет старта сессий, dhcp запросы есть, а ответов нет и в логе тишина

Отключите ВСЕ firewall и selinux

#iptables -F
#ebtables -F
#iptables -t mangle -F

#systemctl disable firewalld
#systemctl stop firewalld

посмотреть что есть в таблице для nft
#nft list ruleset

посмотреть что есть в таблицах iptables
#iptables -nL
#iptables -t mangle -nL

Fix Upload problem | Исправление проблемы с исходящим каналом от абонента

disable tso gso gro | необходимо выключить tso gso gro

#ethtool -K eth0 tso off gso off gro off

Fix Download speed problem | Исправление проблемы скорости с входящем каналом к абоненту

change shaper from htb to tbf | измените шейпер с htb на tbf

[shaper]

down-limiter=tbf

Show interface eth errors | Показать ошибки на eth интерфейсе

#ethtool -S eth0 | grep «csum\|miss\|error»
#ethtool -m eth0

Change powersave mode pcie_aspm | Изменить powersave режим pcie_aspm

проверить

#cat /sys/module/pcie_aspm/parameters/policy

powersave

заменить #echo performance > /sys/module/pcie_aspm/parameters/policy

еще

#echo «performance» | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

посмотреть

#watch -n 1 grep MHz /proc/cpuinfo

если выдало

[default] performance powersave

или ошибку

bash: echo: write error: Operation not permitted

можно попробовать добавить в /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet pcie_aspm=off"

обновить initramfs и сделать reboot

Full log ppp | Получить полный лог для ppp

[ppp]
verbose=1
[pppoe]
verbose=1
[log]
level=5

Drop sessions specific IP | Завершить сессии по маске для определенных IP

accel-cmd show sessions ifname,ip | grep 10.38. | awk '{print $1;}' | xargs -I IF  accel-cmd terminate if IF

Drop sessions specific speed | Завершить сессии по маске для скорости

filetmp=/tmp/4096.txt
rm $filetmp

accel-cmd -H bng0kl12 show sessions | grep 102400 | while read line ; do

echo $line >> $filetmp
done;

less $filetmp | while read line ; do
interf=$(echo $line | awk -F " " '{print $1}');
#    echo $interf
if (( $interf > "0" ))
    echo $interf
then

    accel-cmd -H bng0kl12 terminate if $interf soft && echo $interf" - Terminate" || echo "ERROR"
#    exit
fi

done;

Offload off and optimization | Выключение оффлоадов и оптимизация

оптимизация с использованием https://github.com/strizhechenko/netutils-linux

cores="$(nproc)"
for dev in eth2 eth3; do
  ethtool --offload $dev rx off tx off sg off tso off gso off gro off lro off rxvlan off txvlan off rxhash off
  ethtool -L $dev combined $cores
  ifconfig $dev txqueuelen 10000
  ethtool -G $dev tx 4096 rx 4096
  maximize-cpu-freq
  rss-ladder $dev
done

Hotplug optimization | Hotplug оптимизация

Debian 10 не подозревают, что существуют ipoe интерфейсы =) поэтому надо их добавить

nano /lib/udev/ifupdown-hotplug найти такое

case "$ACTION" in
    add)
    # these interfaces generate hotplug events *after* they are brought up
    case $INTERFACE in
        ppp*|ippp*|isdn*|plip*|lo|irda*|ipsec*

и добавить |ipoe*

ru/faq.txt · Последние изменения: 2020/08/04 18:34 — alexander