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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
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
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:
cat /proc/interrupts
Jak mi coś przyjdzie do głowy to napisze.
Offline
na chwile obecna nie mam duzego obciazenia, ale to drukuje interrupts
# cat /proc/interrupts
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
#!/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
Strony: 1
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00128 | 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.117.104.30' WHERE u.id=1 |
0.00076 | UPDATE punbb_online SET logged=1732884018 WHERE ident='18.117.104.30' |
0.00043 | SELECT * FROM punbb_online WHERE logged<1732883718 |
0.00090 | SELECT topic_id FROM punbb_posts WHERE id=132238 |
0.00065 | SELECT id FROM punbb_posts WHERE topic_id=15373 ORDER BY posted |
0.00092 | 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.00007 | SELECT search_for, replace_with FROM punbb_censoring |
0.00096 | 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.00085 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=15373 |
Total query time: 0.00696 s |