Есть сервер FreeBSD 7.2-RELEASE-p4 с 2 сетевыми(Broadcom,1000baseTX), одна смотрит в Интернет, другая в локалку. У клиентов из локалки он default route и часть из них (чтобы не устанавливать vpn подключение) ходит в Интернет через nat, реализованный средствами PF. Надо отметить, что таких клиентов очень мало и большая часть приходящих пакетов просто отбрасывается.
Для простоты будем считать, что ядро GENERIC, все sysctl дефолтные.
В часы пик на сервер приходит огромное число пакетов, ping дает больше 60% потерь
# netstat -w 1
input (Total) output
packets errs bytes packets errs bytes colls
19403 0 2320139 19954 0 3015575 0
19274 0 2293487 19656 0 2438573 0
18090 0 2309526 18463 0 2948751 0
16219 0 2067349 16654 0 2721160 0
16649 0 2054777 17096 0 2632859 0
13568 0 1889023 13820 0 2462823 0
14221 0 1944276 14520 0 2611257 0
14232 0 2047085 14504 0 2733930 0
11533 0 1767689 11933 0 2526629 0Подскажите, какие параметры sysctl надо подтянуть, чтобы сервер справлялся с таким количеством пакетов?
мало информации даете, добавьте информации из top -SP, добавляли что-то в sysctl? считать "GENERIC" - а он действительно стоит или всетаки чтото изменили? )
>мало информации даете, добавьте информации из top -SP, добавляли что-то в sysctl?
>считать "GENERIC" - а он действительно стоит или всетаки чтото изменили?
>)Сейчас нагрузка не такая большая, по ping-y потерь нет.
# netstat -w 1
input (Total) output
packets errs bytes packets errs bytes colls
6358 0 1071897 6793 0 1478764 0
5324 0 922911 5613 0 1409409 0
7685 0 1151598 8140 0 1710895 0
5708 0 938901 6096 0 1425543 0
6946 0 1137547 7384 0 1628002 0
6528 0 1033960 6931 0 1527746 0
4730 0 927872 5168 0 1386123 0
5874 0 979754 6155 0 1488519 0
6465 0 967571 7018 0 1479549 0
5817 0 942354 6218 0 1299708 0
5499 0 988677 5939 0 1462583 0
5239 0 849316 5753 0 1360063 0# top -SP
last pid: 77864; load averages: 0.34, 0.21, 0.12 up 0+15:00:07 11:24:55
215 processes: 10 running, 188 sleeping, 17 waiting
CPU 0: 1.1% user, 0.0% nice, 0.4% system, 0.0% interrupt, 98.5% idle
CPU 1: 2.3% user, 0.0% nice, 1.1% system, 0.0% interrupt, 96.6% idle
CPU 2: 8.6% user, 0.0% nice, 2.3% system, 0.0% interrupt, 89.1% idle
CPU 3: 0.0% user, 0.0% nice, 1.9% system, 0.0% interrupt, 98.1% idle
CPU 4: 0.0% user, 0.0% nice, 0.0% system, 1.5% interrupt, 98.5% idle
CPU 5: 0.0% user, 0.0% nice, 0.4% system, 0.0% interrupt, 99.6% idle
CPU 6: 0.0% user, 0.0% nice, 3.0% system, 0.0% interrupt, 97.0% idle
CPU 7: 0.0% user, 0.0% nice, 0.0% system, 10.1% interrupt, 89.9% idle
Mem: 1265M Active, 5701M Inact, 684M Wired, 86M Cache, 399M Buf, 191M Free
Swap: 10G Total, 10G FreePID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
14 root 1 171 ki31 0K 16K CPU4 4 867:40 100.00% idle: cpu4
12 root 1 171 ki31 0K 16K CPU6 6 867:09 100.00% idle: cpu6
16 root 1 171 ki31 0K 16K CPU2 2 859:29 100.00% idle: cpu2
13 root 1 171 ki31 0K 16K CPU5 5 860:45 98.88% idle: cpu5
15 root 1 171 ki31 0K 16K CPU3 3 870:48 98.68% idle: cpu3
17 root 1 171 ki31 0K 16K CPU1 1 837:09 98.39% idle: cpu1
18 root 1 171 ki31 0K 16K RUN 0 820:04 96.29% idle: cpu0
11 root 1 171 ki31 0K 16K CPU7 7 863:25 96.00% idle: cpu7
59306 root 9 44 0 1491M 1280M select 2 3:19 11.47% trinity-core
19 root 1 -44 - 0K 16K WAIT 7 100:38 9.28% swi1: net
20 root 1 -32 - 0K 16K WAIT 5 7:26 0.49% swi4: clock sio
48 root 1 -68 - 0K 16K - 6 22:23 0.10% dummynet
893 root 1 -68 - 0K 16K sleep 1 3:28 0.00% ng_queue3
897 root 1 -68 - 0K 16K sleep 2 3:27 0.00% ng_queue7
890 root 1 -68 - 0K 16K sleep 0 3:27 0.00% ng_queue0
894 root 1 -68 - 0K 16K sleep 3 3:27 0.00% ng_queue4
896 root 1 -68 - 0K 16K sleep 2 3:27 0.00% ng_queue6
892 root 1 -68 - 0K 16K sleep 0 3:27 0.00% ng_queue2
891 root 1 -68 - 0K 16K sleep 1 3:26 0.00% ng_queue1
895 root 1 -68 - 0K 16K sleep 1 3:26 0.00% ng_queue5
7232 root 2 4 0 21440K 9888K kqread 3 3:12 0.00% transmission-daemon
899 root 1 44 0 27528K 7324K select 0 2:07 0.00% snmpd
12093 root 1 44 0 71100K 21476K select 1 1:58 0.00% ghost++
22 root 1 -16 - 0K 16K - 1 1:18 0.00% yarrow
3 root 1 -8 - 0K 16K - 0 1:17 0.00% g_up
57 root 1 20 - 0K 16K syncer 0 0:55 0.00% syncer
37 root 1 -64 - 0K 16K WAIT 6 0:42 0.00% irq19: uhci1+
4 root 1 -8 - 0K 16K - 0 0:36 0.00% g_down
8400 root 1 44 0 38972K 14928K select 1 0:32 0.00% ghost++
8403 root 1 8 0 38844K 14640K nanslp 0 0:31 0.00% ghost++
12096 root 1 44 0 38972K 14672K select 0 0:31 0.00% ghost++
49 root 1 -8 - 0K 16K m:w1 3 0:29 0.00% g_mirror gm0
12394 root 2 8 0 23240K 5244K nanslp 6 0:27 0.00% trinity-realm
25716 root 2 8 0 23240K 5328K nanslp 3 0:25 0.00% trinity-realm
47 root 1 8 - 0K 16K pftm 0 0:17 0.00% pfpurge
964 cm 6 8 0 27200K 5236K nanslp 1 0:08 0.00% icecast
77648 root 1 46 0 31084K 6316K select 2 0:07 0.00% proftpd
769 root 1 44 0 5692K 1156K select 1 0:04 0.00% syslogd
2 root 1 -8 - 0K 16K - 1 0:04 0.00% g_event
514 _pflogd 1 -58 0 6888K 1336K bpf 0 0:04 0.00% pflogdВ ядре убраны ненужные devices и добавлено
options IPSEC
device crypto
device cryptodevoptions GEOM_MIRROR
options ACCEPT_FILTER_HTTP
options ACCEPT_FILTER_DATA
options QUOTA
options NULLFS
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options DUMMYNET
options DEVICE_POLLING
options HZ=1000device coretemp
device ipmi
device pf
device pflog
device pfsyncОтключение POLLING ситуации не меняет, HZ=1000 менять не пробовал - вроде как DUMMYNET тогда неправильно работает. При дефолтных sysctl тормоза в часы пик остаются, при таких тоже:
security.bsd.see_other_uids=0
kern.coredump=0
net.inet.ip.fw.one_pass=0
net.inet.ip.dummynet.io_fast=0
net.inet.ip.dummynet.hash_size=256net.inet.tcp.sendspace=2097152
net.inet.tcp.recvspace=2097152
net.inet.tcp.sendbuf_max=16777216
net.inet.tcp.recvbuf_max=16777216
net.inet.tcp.mssdflt=1460
net.inet.tcp.slowstart_flightsize=54
net.inet.tcp.tcbhashsize=4096
net.inet.tcp.msl=15000net.inet.icmp.icmplim=100
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1net.inet.ip.fastforwarding=1
kern.ipc.maxsockets=204800
kern.ipc.maxsockbuf=16777216
kern.ipc.nmbclusters=262144
kern.ipc.somaxconn=24096
kern.polling.each_burst=512
kern.polling.burst_max=1000
kern.polling.burst=1000
net.inet.ip.intr_queue_maxlen=1024В моменты сетевых перегрузок Load Average редко поднимается выше 1,5.
Сетевухи сменить на em.
>Сетевухи сменить на em.При каком количестве пакетов не будет затыков на em?
Сервер HP ProLiant DL-160 G5, сетевые встроенные, интересуют именно программные способы решения проблемы.
>>Сетевухи сменить на em.
>
>При каком количестве пакетов не будет затыков на em?
>Сервер HP ProLiant DL-160 G5, сетевые встроенные, интересуют именно программные способы решения
>проблемы.bge - крайне сомнительно. На нормально em можно без напрягов 100kpps протолкать, а с напрягами на nag.ru и 1Mpps делали.
>bge - крайне сомнительно. На нормально em можно без напрягов 100kpps протолкать,
>а с напрягами на nag.ru и 1Mpps делали.Т.е. дело исключительно в железе и тюнинг помочь не сможет? Слабовата сама сетевая или ее драйвер в FreeBSD?
>Т.е. дело исключительно в железе и тюнинг помочь не сможет? Слабовата сама
>сетевая или ее драйвер в FreeBSD?Железяка кривая. Некоторые сетевухи вообще полусофтверные и дергают систему прерываниями нещадно. Разумеется, с потерей пропускной. Хорошие карточки умеют сами накапливать пакеты во внутреннем буфере и дергают систему только когда припрет. Этакий поллинг средствами самой сетевухи.
Но, правда, и кривыми драйверами можно хорошую железку превратить в кривое тормозилище.
5.4-PRERELEASE
em0 и em1потерь нет.
netstat -w 1
input (Total) output
packets errs bytes packets errs bytes colls
60920 0 48921461 61263 0 49594767 0
63191 0 51179901 63431 0 52129590 0
52702 0 40281606 52805 0 40637007 0
51649 0 38894374 51728 0 39476698 0
49687 0 36606629 49954 0 37630100 0
54443 0 40972603 54871 0 42608834 0
53973 0 40544866 55004 0 43926172 0
53207 0 39873037 54280 0 43491150 0
53942 0 41342597 54369 0 43106611 0
55982 0 43031996 57135 0 46622795 0
50619 0 38154174 50867 0 39281929 0
48890 0 37502603 49020 0 38153557 0
51122 0 37872488 51368 0 39020272 0
50475 0 37218656 50573 0 37754652 0