Перейти к содержимому
Калькуляторы

Ухудшение пинга и потери при >500 VPN юзеров

Сервер на Linux 2.6.18 терминирует PPTP. При количестве клиентов более 500, пинг сильно скачет от 1 до 400 мс и появляются потери 5 - 10 на 1000 пакетов. NAT отсутствует, шейпинг отсутствует.

Пингую внутренний сервер, т.е. трафик проходит транзитом через VPN и сразу на сервер.

HZ в ядре 1000, загружал ядро с HZ 250, на ситуацию это не влияет.

PPTP в юзерспейс.

 

Сетевушки вот такие:

Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet

driver: r8169

version: 2.2LK-NAPI

 

Подскажите в чем может быть проблема и как продиагностировать?

Изменено пользователем SokolovS

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

oprofile

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Причем в основном пинг около 2 мс, но иногда на 4-5 пингов подскакивает на уровень от 100-400.

Транзитный трафик порядка 50-60 Мбит в пике.

При ~500 и более юзерах примерно так:

top - 23:21:35 up 8 days, 13:37,  1 user,  load average: 6.55, 10.44, 12.25
Tasks: 950 total,  48 running, 902 sleeping,   0 stopped,   0 zombie
Cpu(s):  8.3% us, 22.3% sy,  0.1% ni, 18.9% id,  0.0% wa,  6.5% hi, 43.9% si,  0.0% st
Mem:   2070088k total,  1309244k used,   760844k free,   717928k buffers
Swap:  2008084k total,        0k used,  2008084k free,   237448k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
4953 root      16   0  2620 1528  796 R    6  0.1   0:04.54 top
25882 root      16   0  1624  592  460 R    6  0.0   0:22.43 pptpctrl
2631 root      15   0  1620  636  460 S    5  0.0   0:47.05 pptpctrl
10068 root      15   0  1884  848  460 S    4  0.0  13:27.69 pptpctrl
23928 root      15   0  2016  984  460 R    4  0.0 541:44.76 pptpctrl
20712 root      15   0  1888  856  460 S    4  0.0  16:51.05 pptpctrl
2259 zabbix    20   5  2032  428  336 S    3  0.0  61:23.58 zabbix_agentd
21026 root      15   0  1756  708  460 R    3  0.0 156:56.35 pptpctrl
    6 root      34  19     0    0    0 R    3  0.0 402:30.85 ksoftirqd/1
2258 zabbix    21   5  2028  416  324 S    3  0.0  60:37.35 zabbix_agentd
2052 root      16   0  1624  660  460 R    3  0.0   2:59.17 pptpctrl
    3 root      34  19     0    0    0 S    3  0.0 380:09.75 ksoftirqd/0
27856 root      15   0  1752  724  460 S    3  0.0  20:53.51 pptpctrl
19952 root      16   0  1624  592  460 R    3  0.0   1:30.71 pptpctrl
15005 root      15   0  1620  608  460 R    3  0.0   5:26.62 pptpctrl
6846 root      15   0  1624  660  460 S    2  0.0   3:42.44 pptpctrl
22669 root      15   0  1620  576  460 S    2  0.0   0:36.41 pptpctrl
23600 root      15   0  1620  612  460 S    2  0.0   1:25.39 pptpctrl
3469 root      15   0  1620  560  460 S    2  0.0   0:07.88 pptpctrl
11698 root      15   0  1620  616  460 R    2  0.0   8:50.72 pptpctrl
20862 root      15   0  1620  668  460 S    2  0.0   2:25.13 pptpctrl
7949 root      15   0  1620  672  460 R    2  0.0  10:13.71 pptpctrl
15940 root      15   0  1756  704  460 R    2  0.0  19:13.38 pptpctrl
23020 root      15   0  1620  588  460 R    2  0.0   7:14.14 pptpctrl
6595 root      15   0  1624  676  460 R    2  0.0  14:09.27 pptpctrl
18975 root      15   0  1620  676  460 S    2  0.0   7:08.20 pptpctrl
16515 root      15   0  1620  612  460 R    2  0.0   1:57.41 pptpctrl
18486 root      15   0  1620  600  460 R    2  0.0   1:42.89 pptpctrl
27132 root      15   0  1624  584  460 S    2  0.0   0:59.51 pptpctrl
11944 root      15   0  1624  560  460 R    1  0.0   1:01.02 pptpctrl
25137 root      15   0  1620  636  460 R    1  0.0   5:58.47 pptpctrl
12103 root      15   0  1624  568  460 D    1  0.0   0:22.76 pptpctrl

Изменено пользователем SokolovS

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

oprofile
Рано ещё его читать.

Dmesg ни на что не ругается ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

oprofile
Рано ещё его читать.

Вот и я так подумал, камень то грузит не на 100%, т.е. нехватки процессорного времени нет.

 

Dmesg ни на что не ругается ?
Есть вот такой варнинг... больше ничего нет

BUG: warning at kernel/cpu.c:51/unlock_cpu_hotplug()
[<c0137598>] unlock_cpu_hotplug+0x2c/0x54
[<c02914f2>] store_speed+0x99/0xa2
[<c0291459>] store_speed+0x0/0xa2
[<c0290309>] store+0x31/0x41
[<c0197227>] sysfs_write_file+0xa5/0xcf
[<c0197182>] sysfs_write_file+0x0/0xcf
[<c0161ef7>] vfs_write+0xa6/0x14b
[<c0162783>] sys_write+0x3c/0x63
[<c0102be5>] sysenter_past_esp+0x56/0x79

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот и я так подумал, камень то грузит не на 100%, т.е. нехватки процессорного времени нет.

Чтоб узнать, например, что прерывания грузят проц на 30% и нужно включить NAPI, вовсе не обязательно ждать, пока система загнется. Считайте, что профайлер - тот же top, но не риалтаймовый, а статистический. Имхо, от общей статистики больше толку, чем от моментальных величин в любой момент времени.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2EvilShadow: а разве решение использовать NAPI не сам драйвер сетевушки принимает?

У меня в пике больше 20 kpps не бывает.

Изменено пользователем SokolovS

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Он может просто быть собран без поддержки NAPI :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Он может просто быть собран без поддержки NAPI :)
См. первый пост

 

Меня вот что смущает.

# cat /proc/interrupts

...

11: 249357177 3425257197 XT-PIC libata, ohci1394, eth3, eth4

...

 

Обе сетевушки висят на однмо прерывании. Это вобще нормально?

Изменено пользователем SokolovS

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ещё XT-PIC смущает

APIC не работает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

iptables покажи ?
#!/bin/sh

# Сменим на каталог размещения скрипта
FWDIR=`dirname $0`
cd $FWDIR

# Исполняемый файл iptables
IPTABLES="iptables"

# Интерфейсы
LO_IFACE="lo"
LAN_IFACE="eth3"
SRV_IFACE="eth5"
INET_IFACE="eth4"
CLIENT_IFACE="ppp+"

# Сети и адреса
LOCAL_NET="x.x.x.x/16"
OFFICE_NET="x.x.x.x/22"
LAN_IP="x.x.x.x"
GRAY_NET="x.x.x.x/16"
# Белая сеть
OUR_NETWORK="x.x.x.x/22"

# Названия цепочек
LOCAL="ZLOCAL"
BILLING="ZBILLING"

# Очистить таблицы
$IPTABLES -F
$IPTABLES -X

# Политика по умолчанию IPv4
$IPTABLES -P FORWARD DROP

##########################################
# Билинг, forward трафик
##########################################
$IPTABLES -N $BILLING

# [ACCOUNTING] Считаем трафик на собственную белую подсеть
$IPTABLES -A $BILLING -d $OUR_NETWORK -j ULOG --ulog-prefix "FWD_IN"

# [ACCOUNTING] Считаем трафик на серую подсеть
$IPTABLES -A $BILLING -o $CLIENT_IFACE -d $GRAY_NET -j ULOG --ulog-prefix "FWD_IN"

# Разрешаем трафик в выданную подсеть для машин со статическими адресами
$IPTABLES -A $BILLING -i $SRV_IFACE -s $OUR_NETWORK -j RETURN
$IPTABLES -A $BILLING -o $SRV_IFACE -d $OUR_NETWORK -j RETURN

# Разрешаем трафик в выданную подсеть для юр.лиц
$IPTABLES -A $BILLING -i $INET_IFACE -s $OUR_NETWORK -j RETURN
$IPTABLES -A $BILLING -o $INET_IFACE -d $OUR_NETWORK -j RETURN

# Разрешаем трафик на собственную подсеть для VPN-клиентов
$IPTABLES -A $BILLING -i $CLIENT_IFACE -s $OUR_NETWORK -j RETURN
$IPTABLES -A $BILLING -o $CLIENT_IFACE -d $OUR_NETWORK -j RETURN

# Разрешаем на серую подсеть для VPN-клиентов
$IPTABLES -A $BILLING -i $CLIENT_IFACE -s $GRAY_NET -j RETURN
$IPTABLES -A $BILLING -o $CLIENT_IFACE -d $GRAY_NET -j RETURN

# Все остальное удалить
$IPTABLES -A $BILLING -j DROP

##########################################
# Disable conntrack for transit
##########################################
$IPTABLES -t raw -A PREROUTING -i $CLIENT_IFACE -s $OUR_NETWORK -j NOTRACK
$IPTABLES -t raw -A PREROUTING -d $OUR_NETWORK -j NOTRACK

$IPTABLES -t raw -A PREROUTING -i $CLIENT_IFACE -s $GRAY_NET -j NOTRACK
$IPTABLES -t raw -A PREROUTING -d $GRAY_NET -j NOTRACK

##########################################
# Цепочка для локальной сети
##########################################
$IPTABLES -N $LOCAL
$IPTABLES -A $LOCAL -p TCP -i $LAN_IFACE -s $OFFICE_NET --dport 10050 -j ACCEPT         # Zabbix Agent
$IPTABLES -A $LOCAL -p TCP -i $LAN_IFACE --dport 22 -j ACCEPT                           # SSH
$IPTABLES -A $LOCAL -p TCP -i $LAN_IFACE --dport 1723 -j ACCEPT                         # PPTP 
$IPTABLES -A $LOCAL -p GRE -i $LAN_IFACE -j ACCEPT                                      # GRE

##########################################
# Разрешающие INPUT правила
##########################################
$IPTABLES -A INPUT -p ICMP --icmp-type echo-request -j ACCEPT                       # Ping (все пинги)
$IPTABLES -A INPUT -p UDP -m udp --sport 32769:65535 --dport 33434:33523 -j ACCEPT  # Traceroute

# Отправить в цепочку для локальной сети
$IPTABLES -A INPUT -i $LAN_IFACE -s $LOCAL_NET -j $LOCAL

# Разрешать все loopback пакеты
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -j ACCEPT

# Удалять все входящие пакеты не ESTABLISHED,RELATED
$IPTABLES -A INPUT -p ALL -m state ! --state ESTABLISHED,RELATED -j DROP

# Цепочки по forward трафку
$IPTABLES -A FORWARD -j $BILLING
$IPTABLES -A FORWARD -j ACCEPT

# Сохранить основные правила
/sbin/service iptables save

 

В форвард цепочке трафик отправляется в ulog-acctd, но его отключение на ситуацию не влияет.

 

ещё XT-PIC смущает

APIC не работает?

Да, apic отключен отпцией noapic в параметрах ядра.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Он может просто быть собран без поддержки NAPI :)
См. первый пост

Самое главное:
Чтоб узнать, например, что прерывания...
Я к тому, что профайлер - штука полезная всегда

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сервер на Linux 2.6.18 терминирует PPTP. При количестве клиентов более 500, пинг сильно скачет от 1 до 400 мс и появляются потери 5 - 10 на 1000 пакетов. NAT отсутствует, шейпинг отсутствует.

Пингую внутренний сервер, т.е. трафик проходит транзитом через VPN и сразу на сервер.

HZ в ядре 1000, загружал ядро с HZ 250, на ситуацию это не влияет.

PPTP в юзерспейс.

 

Сетевушки вот такие:

Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet

driver: r8169

version: 2.2LK-NAPI

 

Подскажите в чем может быть проблема и как продиагностировать?

Проблема - userspace pptp

Диагностика - mpstat -P ALL 10

 

Общий совет - если процессоров(ядер) >1, то каждая сетевая должна быть на своем отдельном прерывании, соотвественно, каждое прерывание на отдельном процессоре(ядре).

Но с юзерспейс pptp это все равно не спасет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот уже натсраиваю новый сервер с accel-pptp. Кстати как быть когда ядер 4? Я так понимаю irqbalance нужно запускать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот уже натсраиваю новый сервер с accel-pptp. Кстати как быть когда ядер 4? Я так понимаю irqbalance нужно запускать?

Замечено что после установки accel только одно ядро загружается. Второе простаивает пока прерывания одной из сетевок на другое ядро не посадишь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хм. Как тогда быть если ядер >2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не загоняйся с ядрами, реализация PPP в ядре однопоточная

вобщем пробуй accel-pptp, если на поптопе у тебя было 500 в переделе, то с accel-pptp 1000 коннектов будет лафа серваку, он будет отдыхать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У нас со sdy_moscow пока большой лафы не получилось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да, может быть я и преувеличил с лафой, но то что он потянет 1000 коннектов у меня нет сомнений

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ivantey просто поторопился.... :-)

 

Сегодня подшаманили с файрволом и ВОТ ОНО ЧУДО - нагрузка на проц по моим прикидкам снизилась в 2-3 раза....

Итог

1. ставим ассел

2. контрак или отключаем или маскируем в цепочке рау (ГРЕ протокол, 1723 порт тсп, ИП клиентов) в иптаблес (я так в итоге сделал, т.к. хочу кое-что все-таки отслеживать и НАТить).

3. файрвол настраиваем с умом - чтоб гре и пакеты юзеров лишних проверок не проходили.

 

И УРА! ЗАРАБОТАЛО!

 

З.Ы. если ве-же нужен НАТ - то тут походу ничего не поможет - контрак реально больше 500 сесий активных юзверей не вытянет...

 

ХЕВ - кстати в 0.8.2какие то проблемы... make server не выполняется в каком-то конфигуре происходит сбой из-за пермишенов.... попозже сравню файлы...

Изменено пользователем sdy_moscow

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

З.Ы. если ве-же нужен НАТ - то тут походу ничего не поможет - контрак реально больше 500 сесий активных юзверей не вытянет...
вытянет, нужно отрубать только conntrack_gre, а не весь conntrack
ХЕВ - кстати в 0.8.2какие то проблемы... make server не выполняется в каком-то конфигуре происходит сбой из-за пермишенов.
только что проверил, всё нормально
Изменено пользователем xeb

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.