Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2009-11-02 20:54:50

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

server pppoe - dostrojenie kernela pod wydajnosc - pomozecie?

witam

od dluzszego czasu walcze z obciazeniem serwera. po walkach okazalo sie ze winne bylo imq.
postawilem nowy czysty serwer i narazie jest ok, ale widze ze jednak load potrafi troche wzrosnac , do ponad 1,5, przy nie wielkiej ilosci zalogowanych userow, ok 400.
to teraz troche o sprzecie i serwerze:
dell 2650 2xXEON 3,0GHz, 4GB RAM, dyski SCSI
Linux black 2.6.26-2-686 #1 SMP Sat Oct 17 17:59:23 UTC 2009 i686 GNU/Linux
kernel bez zadnych przerobek, bez rekompilacji, dystrybucyjny.
do tego doinstalowalem ppp-2.4.4 i rp-pppoe-3.10 z zrodelek. pppoe dziala z kernel mode.
quagga z paczek - do ospfa

do serwera mam zalogowanych ok 400 klientow po pppoe i load potrafi siegnac nawet i 1,5 aczkolwiek nie caly czas, przewaznie jesk ok 0,2-0,6 ale wskakuje duzo wiecej. zastanawiam sie co bedzie przy 1000 polaczen, serwer chyba zrobi sie czerwony.
zastanawiaja mnie routery, ktore sprzetowo zblizone sa do mojego i producent zapewnia stabilnosc dzialania do 6000 polaczen pppoe i to nawet z cieciem
apropos ciecia.
ze wzgledu iz zrezygnowalem z imq, ciecie lacza robie dynamicznie na interfejsach ppp. klient sie laczy i wykonywany jest skrypt, ktory ustawia hfsc na interfejsie + klasy na voip, dns i icmp, ack. upload robie na wychodzacym eth z filtramy hashujacymi.

czy da sie kakos podrasowac kernel, ustawienia w sysctl.conf aby usprawinic dzialanie mojego serwera?
jesli tak to mam prosbe do was o podpowiedzi co i jakie opcje ustawic w kernelu aby dostroic go do dobrej wydajnosci w mojej konfiguracji.
nie ukrywam, ze bede bardzo wdzieczny za wszelakie podpowiedzi. w szczegolnosci ze dosyc dlugo z tym sie mecze.

pozdrawiam

Offline

 

#2  2009-11-03 09:59:39

  siarka2107 - Użyszkodnik DUG

siarka2107
Użyszkodnik DUG
Skąd: Warszawa
Zarejestrowany: 2006-04-05

Re: server pppoe - dostrojenie kernela pod wydajnosc - pomozecie?

Na pewno dopieszczenie plików konfiguracyjnych serwera i demona ppp będzie dobrym pomysłem (wyłączenie mppe na pewno da dobre rezultaty), kernel proponuję dostosować do maszyny i potrzeb jakie ma spełniać, kompilacja całości na sprzęcie na którym ma to chodzić też może przynieść pozytywne rezultaty - użyj oczywiście odpowiednich, bezpiecznych flag przy kompilacji. Najlepiej pokaż pliki konfiguracyjne oraz firewall. Po czym twierdzisz, że obciążeniu jest winien serwer pppoe, może to firewall albo kolejki? Podaj wyniki polecenia na obciążonym serwerze:

Kod:

cat /proc/interrupts

Jak mi coś przyjdzie do głowy to napisze.

Offline

 

#3  2009-11-03 10:33:28

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: server pppoe - dostrojenie kernela pod wydajnosc - pomozecie?

na chwile obecna nie mam duzego obciazenia, ale to drukuje interrupts
# cat /proc/interrupts

Kod:

           CPU0       CPU1       CPU2       CPU3       
  0:        130          0          0          0   IO-APIC-edge      timer
  1:          2          0          0          0   IO-APIC-edge      i8042
  3:          4          0          0          0   IO-APIC-edge    
  4:          4          0          0          0   IO-APIC-edge    
  8:          2          0          0          0   IO-APIC-edge      rtc0
  9:          0          0          0          0   IO-APIC-fasteoi   acpi
 11:         25        481          0          0   IO-APIC-fasteoi   ohci_hcd:usb1
 12:          3          0          0          0   IO-APIC-edge      i8042
 14:         81          0          0          0   IO-APIC-edge      ide0
 15:          0          0          0          0   IO-APIC-edge      ide1
 24:      29986  757675871   54330397          0   IO-APIC-fasteoi   eth2
 28:   45267437  579075196      25598     119178   IO-APIC-fasteoi   eth0
 29:       3705          0          0     909031   IO-APIC-fasteoi   eth1
 30:       4426          0          0     469306   IO-APIC-fasteoi   aacraid
NMI:          0          0          0          0   Non-maskable interrupts
LOC:   85414553  571908856   34193367   16398155   Local timer interrupts
RES:    3194720     470204    1394378    1544919   Rescheduling interrupts
CAL:      11876      15123      13528      13739   Function call interrupts
TLB:     118673      74523     158671     112490   TLB shootdowns
TRM:          0          0          0          0   Thermal event interrupts
SPU:          0          0          0          0   Spurious interrupts
ERR:          0
MIS:          0

a co do firewalla to po czesci moze byc i on.
sa to plaskie rogolki i troche niechlubnie zrobione. wlasnie zabieram sie za zrobienie czegos na lancuchach.

{edited}

skecilem cosik takiego

Kod:

#!/bin/bash

ipt="/sbin/iptables"

#funkcja czyszczaca wszystkie wpisy w iptables i ustawiajaca polityke na drop
#funkcja do startu/restartu
function clean(){
$ipt -F
$ipt -X
$ipt -Z
$ipt -F -t nat
$ipt -X -t nat
$ipt -F -t mangle
$ipt -X -t mangle

$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD DROP

$ipt -A INPUT -i lo -j ACCEPT
$ipt -A OUTPUT -o lo -j ACCEPT
}

#funkcja do stopowanie firewalla. ustawia polityke na accept
function stopf(){
$ipt -F
$ipt -X
$ipt -Z
$ipt -F -t nat
$ipt -X -t nat
$ipt -F -t mangle
$ipt -X -t mangle

$ipt -P INPUT ACCEPT
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
}

function secur(){
#blokowanie polaczen NEW z flaga inna niz SYN
$ipt -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$ipt -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP

#odrzuczenie pakietow pofragmentowanych
$ipt -A INPUT -f -j DROP
$ipt -A FORWARD -f -j DROP

#odrzucenie polaczen w stanie INVALID
$ipt -A INPUT -m state --state INVALID -j DROP
$ipt -A FORWARD -m state --state INVALID -j DROP

#automatyczne rozpoznanie mtu
$ipt -t mangle -A OUTPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
$ipt -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
}

function prerouting(){
#na tym lancuchu bede robil przekierowanka dla nieplacacych
#zakladam nowe lancuchy po jednym dla kazdej sieci
$ipt -t nat -N siec32
$ipt -t nat -N siec33
$ipt -t nat -N siec34
$ipt -t nat -N siec35
$ipt -t nat -N siec36
$ipt -t nat -N siec37

#z poszczegolnych sieci wrzuce ruch do lancuchow

$ipt -t nat -A PREROUTING -i ppp+ -s 192.168.32.0/24 -j siec32
$ipt -t nat -A PREROUTING -i ppp+ -s 192.168.33.0/24 -j siec33
$ipt -t nat -A PREROUTING -i ppp+ -s 192.168.34.0/24 -j siec34
$ipt -t nat -A PREROUTING -i ppp+ -s 192.168.35.0/24 -j siec35
$ipt -t nat -A PREROUTING -i ppp+ -s 192.168.36.0/24 -j siec36
$ipt -t nat -A PREROUTING -i ppp+ -s 192.168.37.0/24 -j siec37
# dla kazdego wpisu w pliku zrobie dnata do hosta
#todo, petle rozpoznajaca po 3 oktecie i odpowiednio wrzucajaca do lancucha
#dla testu zrobie to recznie z jednym adresem
$ipt -t nat -A siec32 -p tcp -s 192.168.32.44 -m multiport --dport 80,8080 -j DNAT --to 192.168.1.1:85
$ipt -t nat -A siec32 -p tcp -s 192.168.32.44 -j DROP

#defaultowo robimy accept
$ipt -t nat -A siec32 -j ACCEPT
$ipt -t nat -A siec33 -j ACCEPT
$ipt -t nat -A siec34 -j ACCEPT
$ipt -t nat -A siec35 -j ACCEPT
$ipt -t nat -A siec36 -j ACCEPT
$ipt -t nat -A siec37 -j ACCEPT
}

function forwardy(){
#polaczenia nawiazane
$ipt -A FORWARD -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A FORWARD -p udp -m state --state ESTABLISHED -j ACCEPT
$ipt -A FORWARD -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A FORWARD -i ppp+ -j ACCEPT
$ipt -A FORWARD -o ppp+ -j ACCEPT
}
function inputy(){
#polaczenia nawiazane
$ipt -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT
$ipt -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
#dla ospf musze wpuscic multicasty
$ipt -A INPUT -m pkttype --pkt-type multicast -j ACCEPT
#wpuszcze polaczenia ssh
$ipt -A INPUT -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p udp --dport 22 -j ACCEPT

}
function outputy(){
#domyslnie jest na ACCEPT
echo
}

case $1 in
    start)
    clean
    secur
    forwardy
    inputy    
#    outputy
    ;;
    stop)
    stopf
    ;;
    restart)
    clean
    secur
    forwardy
    inputy    
#    outputy

    ;;
    *)
        echo -e "\nUzycie: $0 (start|stop|restart)\n"

esac

tylko ze w nowym iptables przy preroutingu nie moge dac DROP. jak rozwiazac przekierowanie?

Ostatnio edytowany przez Nicram (2009-11-03 13:22:14)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.007 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00011 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00127 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.222.78.65' WHERE u.id=1
0.00070 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.222.78.65', 1732891311)
0.00042 SELECT * FROM punbb_online WHERE logged<1732891011
0.00046 SELECT topic_id FROM punbb_posts WHERE id=132234
0.00053 SELECT id FROM punbb_posts WHERE topic_id=15373 ORDER BY posted
0.00044 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=15373 AND t.moved_to IS NULL
0.00017 SELECT search_for, replace_with FROM punbb_censoring
0.00076 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=15373 ORDER BY p.id LIMIT 0,25
0.00078 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=15373
Total query time: 0.00568 s