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

В ДВА?! У меня раз этак в 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

вместо fprobe-ulog лучше использовать ipt_netflow http://sourceforge.net/projects/ipt-netflow

Тестируем. Результаты отпишу.

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

Поставил на один из серверов потестировать 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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.