Jump to content
Калькуляторы

accel pptpd accel pptpd

Поставил на один из серверов потестировать accel pptpd.

 

Все замечательно, но вот процессы pptpd/pppd похоже вовремя, а может и вообще не умирают,

то есть пользователь уже давно отключился, судя по netstat, а процессы и ppp интерфейс все еще живут.

 

Кто использует это решение подскажите, может где чего не докрутил?

 

Спасибо.

 

Share this post


Link to post
Share on other sites

Вот подробности происходящего:

 

в логах видно, что процесс pptpd понимает, что клиент отвалился и ждет завершения pppd:

pptpd[26016]: CTRL: Reaping child PPP[26017].

 

 

Включение для ppp параметров

 

lcp-echo-interval 20

lcp-echo-failure 3

 

тоже не меняет ситуацию.

 

Пока прикрутил костыль, периодески убивающий такие процессы по результатам сверки таблицы процессов и netstat.

 

Share this post


Link to post
Share on other sites

Расскажите, есть реальный выигрыш в производительности при использовании accel-pptp?

Share this post


Link to post
Share on other sites
Расскажите, есть реальный выигрыш в производительности при использовании accel-pptp?

Есть и очень большой. Приблизительно раза в два нагрузка на проц уменьшилась.

Share this post


Link to post
Share on other sites

В ДВА?! У меня раз этак в 20 как минимум нагрузка уменьшилась =)

 

Cpu0  :  1.3% us,  5.2% sy,  0.0% ni, 63.6% id,  0.0% wa,  0.0% hi, 29.9% si
Cpu1  :  1.3% us,  2.6% sy,  0.0% ni, 65.8% id,  0.0% wa,  0.0% hi, 30.3% si
Cpu2  :  0.0% us,  2.7% sy,  0.0% ni, 73.3% id,  0.0% wa,  0.0% hi, 24.0% si
Cpu3  :  3.9% us,  3.9% sy,  0.0% ni, 64.9% id,  0.0% wa,  1.3% hi, 26.0% si

 

vpn ~ # ip ro | grep ppp | wc -l
368

368 юзеров. Со стандартным пптп просто не доживало до такого количества, а сейчас серваки просто отдыхают

 

Сессии не виснут, ни разу не было замечено...

 

Linux vpn.tomilino.net 2.6.23-gentoo-r8 #11 SMP

 

Share this post


Link to post
Share on other sites

А причем тут кол-во пользователей? От них ничего не зависит. Вся нагрузка зависит от pps, обрабатываемых роутером.

Я когда тестировал accel pptp я делал следующий тест: host1 -- сервер pptp -- host2, с host1 посылались пакеты флуд пингом на host2 в течении определенного времени. Так вот за одно и тоже время accel pptp раутил примерно в два раза больше пакетов.

 

В ДВА?! У меня раз этак в 20 как минимум нагрузка уменьшилась =)

 

Cpu0  :  1.3% us,  5.2% sy,  0.0% ni, 63.6% id,  0.0% wa,  0.0% hi, 29.9% si
Cpu1  :  1.3% us,  2.6% sy,  0.0% ni, 65.8% id,  0.0% wa,  0.0% hi, 30.3% si
Cpu2  :  0.0% us,  2.7% sy,  0.0% ni, 73.3% id,  0.0% wa,  0.0% hi, 24.0% si
Cpu3  :  3.9% us,  3.9% sy,  0.0% ni, 64.9% id,  0.0% wa,  1.3% hi, 26.0% si

В 20? То есть до этого у вас нагрузка была ~500% судя по данным выше ;)

Share this post


Link to post
Share on other sites
А причем тут кол-во пользователей? От них ничего не зависит. Вся нагрузка зависит от pps, обрабатываемых роутером.

Я когда тестировал accel pptp я делал следующий тест: host1 -- сервер pptp -- host2, с host1 посылались пакеты флуд пингом на host2 в течении определенного времени. Так вот за одно и тоже время accel pptp раутил примерно в два раза больше пакетов.

 

В ДВА?! У меня раз этак в 20 как минимум нагрузка уменьшилась =)

 

Cpu0  :  1.3% us,  5.2% sy,  0.0% ni, 63.6% id,  0.0% wa,  0.0% hi, 29.9% si
Cpu1  :  1.3% us,  2.6% sy,  0.0% ni, 65.8% id,  0.0% wa,  0.0% hi, 30.3% si
Cpu2  :  0.0% us,  2.7% sy,  0.0% ni, 73.3% id,  0.0% wa,  0.0% hi, 24.0% si
Cpu3  :  3.9% us,  3.9% sy,  0.0% ni, 64.9% id,  0.0% wa,  1.3% hi, 26.0% si

В 20? То есть до этого у вас нагрузка была ~500% судя по данным выше ;)

Черт =) Ладно, про "20" - это я на эмоциях =)

Но с родным pptp серваки дохли задолго до теперешних значений.

 

Трафик, согласно ethstatus:

20.02 MB/s 51710 Packets/s

 

А сейчас в итоге всё упирается в fprobe-ulog, которое, скотино, висит только на одном проце, и пока остальное свободны и могут спокойно обслуживать юзеров - не даёт это делать =) Вот никак не соберусь вырубить его и ради интереса посмотреть, что выдержит accel-pptp в идеальных условиях =)

 

Share this post


Link to post
Share on other sites

а с какими ядрами пробуете?

У меня сходу accel-pptp не собрался...

Edited by sirmax

Share this post


Link to post
Share on other sites

Начиная с 2.6.18 должно собираться без проблем.

Share this post


Link to post
Share on other sites
Начиная с 2.6.18 должно собираться без проблем.
как минимум потребовалось заменить

#include <asm/semaphore.h>

на

#include <linux/semaphore.h>

в if_pppox.h

 

В остальном - запустил, смотрю...

Share this post


Link to post
Share on other sites
В ДВА?! У меня раз этак в 20 как минимум нагрузка уменьшилась =)

 

Cpu0  :  1.3% us,  5.2% sy,  0.0% ni, 63.6% id,  0.0% wa,  0.0% hi, 29.9% si
Cpu1  :  1.3% us,  2.6% sy,  0.0% ni, 65.8% id,  0.0% wa,  0.0% hi, 30.3% si
Cpu2  :  0.0% us,  2.7% sy,  0.0% ni, 73.3% id,  0.0% wa,  0.0% hi, 24.0% si
Cpu3  :  3.9% us,  3.9% sy,  0.0% ni, 64.9% id,  0.0% wa,  1.3% hi, 26.0% si

 

vpn ~ # ip ro | grep ppp | wc -l
368

368 юзеров. Со стандартным пптп просто не доживало до такого количества, а сейчас серваки просто отдыхают

 

Сессии не виснут, ни разу не было замечено...

 

Linux vpn.tomilino.net 2.6.23-gentoo-r8 #11 SMP

 

а что за комп... до 200 сессий у меня на однпроцовых одноядерных атлонах было с мппе128...

на оптероне 2*2 - до 800 сессий.. раффик суммарный 70 мбит или около того

Share this post


Link to post
Share on other sites
а что за комп... до 200 сессий у меня на однпроцовых одноядерных атлонах было с мппе128...

на оптероне 2*2 - до 800 сессий.. раффик суммарный 70 мбит или около того

Это с родным или accel? У меня просто на каждом их них ещё шейпер+нат+fprobe крутятся - тоже грузят

Edited by Wingman

Share this post


Link to post
Share on other sites

с родным...

ppp399 - последний сейчас

ifb423 - максимум после ребута

 

а вообще ppp800 я на нем видел. Но это уже было плохо.

Таких ядра 4

processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 65
model name      : Dual-Core AMD Opteron(tm) Processor 2214
stepping        : 2
cpu MHz         : 2194.481
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy
bogomips        : 4388.96
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp tm stc

Share this post


Link to post
Share on other sites

я собственно, думал что что то делаю не так.. мало траффика и сессий на такую машину....

 

 

а чего ждать от accel-pptp?

Share this post


Link to post
Share on other sites

Ну, pppX - не значит, что в данный момент на нём X человек )

А трафика у вас мало, у нас максимум может быть до 500мб/с, на таких обьёмах core quad с родным пптп насмерть ложился при ~200-300 человек. Accel сегодня попробовал с ipt-netflow вместо fprobe (спасибо, disappointed! =), трафик был ~40 мбайт/с, ~650 юзеров. Мне на одно подключение отдавал 5-7 мбайт. Процы заняты были процентов на 30, но уже начал events/0 подскакивать =)

 

Share this post


Link to post
Share on other sites

Хм, тестовый сервер лег в панику... при 600+ коннектах, хотя до этого умирал на 200

 

с одной стороны приятно что 600, с другой паника... )

 

Проц на нем был (и есть)

massaraksh etc # cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 47
model name      : AMD Athlon(tm) 64 Processor 3000+
stepping        : 2
cpu MHz         : 1802.250
cache size      : 512 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni lahf_lm
bogomips        : 3604.50
clflush size    : 64
power management: ts fid vid ttp tm stc

 

Share this post


Link to post
Share on other sites
Хм, тестовый сервер лег в панику... при 600+ коннектах, хотя до этого умирал на 200

 

с одной стороны приятно что 600, с другой паника... )

 

Проц на нем был (и есть)

Да, паники время от времени вылазят, причем я не заметил никакой закономерности, непонятно, accel-pptp ли виноват =(

 

Share this post


Link to post
Share on other sites

Поставил

echo 30 > /proc/sys/kernel/panic

Буду посмотреть )

 

а вообще да, неслабо, в 3 раза больше конектов...

Share this post


Link to post
Share on other sites
Поставил на один из серверов потестировать accel pptpd.

 

Все замечательно, но вот процессы pptpd/pppd похоже вовремя, а может и вообще не умирают,

то есть пользователь уже давно отключился, судя по netstat, а процессы и ppp интерфейс все еще живут.

 

Кто использует это решение подскажите, может где чего не докрутил?

 

Спасибо.

Тоже были проблеммы с рррd.. Прочитал Ваш пост собрал. Ебилд брал тут - только изменил версию на последнюю) - собралось беспроблемм..

Как и писали ранее - всё замечательно, но появилась такая же проблемма с процессами.. частично решил её добавлением опции "nopersist" в /etc/ppp/options.pptpd .., но несовсем: - после подключения процесы умирают но несразу, а нескалько секунд((. Если обанент в ето же время конектится опять - то создаётся еще один такой же процесс но на другом интерфейсе ррр, и после етого данное соединение неработает ни на одном из етих интерфейсов (невыдается ip). Почитал литературу и конфиги.. но пока только возникает одна мысль - положить скрипты *ip-up ip-down в /etc/ppp (их дергает при конекте) и в с помощью них понтралировать жизнь процессов pptpd/pppd..

 

options.pptpd {

name pptpd

require-mschap-v2

ms-dns 172.16.1.1

proxyarp

debug

lock

nobsdcomp

nodeflate

nopersist

}

 

Поделитесь опытом как решили ету проблемму у себя.. может чего недонастроил(((

 

Share this post


Link to post
Share on other sites
Поделитесь опытом как решили ету проблемму у себя.. может чего недонастроил(((

Решил проблему запуском вот такого костыля раз в минуту.

 

Алгоритм очень простой: берем список процессов, берем список tcp конектов pppd,

если процесс есть, а конекта нет, то убиваем процесс.

 

#!/usr/bin/perl -w

my @ps = `ps ax`;
sleep(3);
my @netstat = `netstat -an | egrep ":1723[[:space:]]" | grep ESTAB`;


my $ns_ips = [];
my $l;
foreach $l (@netstat) {
  push(@$ns_ips, $1) if $l =~ /(\d+\.\d+.\d+.\d+):\d+\s+ESTABLISHED/;
}

my $pppd_ips = [];
my $pppd_pids = [];
my ($j, $i, $ip, $pid);

foreach $l (@ps) {
  if ($l =~ /^\s*(\d+).+pppd.+ipparam\s(\d+\.\d+\.\d+\.\d+)/) {
    ($ip, $pid) = ($2, $1);

    push(@$pppd_ips, $ip);
    push(@$pppd_pids, $pid);
  }
}

for ($i=0; $i<=$#$pppd_ips; $i++) {
    $ip = $pppd_ips->[$i];
    $pid = $pppd_pids->[$i];

    for ($j=0; $j<=$#$ns_ips; $j++) {
        last if ($ns_ips->[$j] eq $ip);
    }

    if ($j > $#$ns_ips) {
        my $ns_entry = `netstat -an | egrep ":1723[[:space:]]" | grep ESTAB | grep $ip:`;
        if ($ns_entry eq '') {
            `date >> /var/log/kill_ppp.log; echo 'ip:$ip pid:$pid' >> /var/log/kill_ppp.log`;
            `kill $pid`;
            sleep 2;
        }
    }
}

 

 

Share this post


Link to post
Share on other sites
у меня такой проблемы нет.

Какое ядро?

Linux nas2 2.6.27.2 #2 SMP Wed Oct 22 14:57:29 MSD 2008 i686 Intel® Pentium® D CPU 3.40GHz GenuineIntel GNU/Linux

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now