Stránka 1 z 1

x86 - 100% CPU firewall

Napsal: 20 Oct 2016 12:51
od sub_zero
Ahoj,

už cca dva měsíce řešíme problém se 100% CPU na x86 mašině. Jedná se o desku X10SRW-F.
Dle tool/profile to žere v tu danou chvíli firewall. Samozřejmě klesne traffic, odezvy vyletí do nebe.
cpu.png

cpu1.png


v inkriminovanou dobu nezaznamenáváme žádnej extrémní dat. tok, útok, ani nic jinýho
wan.png


Kód: Vybrat vše

                  uptime: 5w5d4h21m29s
                  version: 6.36 (stable)
               build-time: Jul/20/2016 14:09:10
              free-memory: 1644.8MiB
             total-memory: 1893.5MiB
                      cpu: Intel(R)
                cpu-count: 8
            cpu-frequency: 3500MHz
                 cpu-load: 4%
           free-hdd-space: 14.7GiB
          total-hdd-space: 14.8GiB
  write-sect-since-reboot: 1177560
         write-sect-total: 1177560
        architecture-name: x86
               board-name: x86
                 platform: MikroTik


nemá někdo nějakej tip? FW má asi 1600 pravidel (jumpy do chainů a v nich IP/MAC filtr a return zpět), 1000 manglů, 800 QT. NAT se nepoužívá.
Pokud se tam něco "motá", jak přijít na to co by to mohlo být?

Díky za názory/rady.

Jirka

Re: x86 - 100% CPU firewall

Napsal: 20 Oct 2016 13:01
od ludvik
nejsou důležité megabity, ale megapakety ... případně megakonexe.

Re: x86 - 100% CPU firewall

Napsal: 26 Oct 2016 09:44
od keksik
Nieco podobne riesim. Na nic som neprisiel. viewtopic.php?f=5&t=21178
Mozno tebe nieco pomoze.

Re: x86 - 100% CPU firewall

Napsal: 01 Nov 2016 22:53
od Jenya
Resim uplne stejnou vec, avsak zatim to neni kriticke. Z bezneho vytizeni 3-10% z niceho nic naroste vytizeni na 30% a pritom megabity ani kilopakety nenarostou. (x86, i3-3250 - 3,5GHz, 2-core + HT, 2-port i350 - AOC-SGP-i2)

Nicmene mam dulezity poznatek, ze se toto zacalo dit az po upgrade sitovych karet na i350 a procesoru na i3-3250. Pred tim tam byly nejake "hloupe" sitovky a procesor Pentium G2020 (2,9GHz, 2-core bez HT, Ivy Bridge). Prumerne vytizeni bylo pochopitelne vyssi, cca 2x, ale zadne nepochopitelne spicky, ktere by neodpovidaly zatizeni se nekonaly.

Nic jineho nez CPU a sitovky se nezmenilo. Tedy az budu moci udelat vypadek, zkusim v biosu vypnout HT a pokud to nepomuze, musi to byt kartou AOC-SGP-i2, hloupe sitovky to nedelaly.

Re: x86 - 100% CPU firewall

Napsal: 02 Nov 2016 13:35
od pedro4444
chlapi kolko vam zerie v zatazi ten supermicro?

Re: x86 - 100% CPU firewall

Napsal: 02 Nov 2016 13:59
od sub_zero
Před 4 dny jsem provedl reboot a do dneška byl klid. Dnes jsem byl svědkem, jak rostlo postupně zatížení až na cca 60%, tak jsem zkusil zákázat jedno nějaký pravidlo ve FW a ihned to kleslo na 3%. Podotýkám, že to bylo pravidlo na povolení PPTP.
cca 3 hodiny byl klid, teď zase postupnej nárůst CPU, zakázal jsem a povolil jiný pravidlo - povolení NTP.
Tohle mě hlava nebere.. pokud v době takového vytížení udělám jakoukoli změnu ve FW, zatížení okamžitě klesne..

Někdo nějakej nápad? Karta je 4 portovka od Supermicra, verze RoS 6.36

Re: x86 - 100% CPU firewall

Napsal: 04 Nov 2016 18:11
od keksik
sub_zero píše:Před 4 dny jsem provedl reboot a do dneška byl klid. Dnes jsem byl svědkem, jak rostlo postupně zatížení až na cca 60%, tak jsem zkusil zákázat jedno nějaký pravidlo ve FW a ihned to kleslo na 3%. Podotýkám, že to bylo pravidlo na povolení PPTP.
cca 3 hodiny byl klid, teď zase postupnej nárůst CPU, zakázal jsem a povolil jiný pravidlo - povolení NTP.
Tohle mě hlava nebere.. pokud v době takového vytížení udělám jakoukoli změnu ve FW, zatížení okamžitě klesne..

Někdo nějakej nápad? Karta je 4 portovka od Supermicra, verze RoS 6.36

Dik za info, skusil som to aj u seba. a ejhla... robi mi to tiez, namatkovo som vypol par najviac aktualne vytazenych filter pravidiel pre input/output, forward a slo to z 50% na 15-20%. Ma picne z toho MK.
ver 6.34.6 x86
hehe, idem pozapinat vsetky NAty, pojde mi cpu servera na 60-70% a skusim potom, ci popripade taku koninu, ako vytvorit bezvyznamne pravidlo vo filtri a kazdych 10s ho schedulerom zap/vyp. OMG :mrgreen: :mrgreen: :mrgreen:

Re: x86 - 100% CPU firewall

Napsal: 04 Nov 2016 18:16
od sub_zero
keksik píše:
sub_zero píše:Před 4 dny jsem provedl reboot a do dneška byl klid. Dnes jsem byl svědkem, jak rostlo postupně zatížení až na cca 60%, tak jsem zkusil zákázat jedno nějaký pravidlo ve FW a ihned to kleslo na 3%. Podotýkám, že to bylo pravidlo na povolení PPTP.
cca 3 hodiny byl klid, teď zase postupnej nárůst CPU, zakázal jsem a povolil jiný pravidlo - povolení NTP.
Tohle mě hlava nebere.. pokud v době takového vytížení udělám jakoukoli změnu ve FW, zatížení okamžitě klesne..

Někdo nějakej nápad? Karta je 4 portovka od Supermicra, verze RoS 6.36

Dik za info, skusil som to aj u seba. a ejhla... robi mi to tiez, namatkovo som vypol par najviac aktualne vytazenych filter pravidiel pre input/output, forward a slo to z 50% na 15-20%. Ma picne z toho MK.
ver 6.34.6 x86
hehe, idem pozapinat vsetky NAty, pojde mi cpu servera na 60-70% a skusim potom, ci popripade taku koninu, ako vytvorit bezvyznamne pravidlo vo filtri a kazdych 10s ho schedulerom zap/vyp. OMG :mrgreen: :mrgreen: :mrgreen:


tak jsem to udelal ja... scriptem+shedulerem co 5sec

Kód: Vybrat vše

# Average CPU Load Notification.
# This will email you once when average CPU Load reaches the set CPU Threshold value.
# When average CPU Load drops back below CPU Threshold the email notification is reset.
# Set up the scheduler to run this at 1-5 second intervals (Sample Rate).
# Original credit goes to rgraham - modified by hartz.

# Threshold is the value that will activate the alert when reached by average CPU Load (1-100)
:local cputhreshold 30;

# Arraysize is the number of CPU Load samples to keep.
# Experiment with this value to incease or decrease the number of samples.
# The greater the value the longer the time that the cpu-load average is calculated for.
:local arraysize 10;

# Misc variables for stuff and things.
:local cpuload 0;
:local arraylen 0;
:local arraypos 0;
:local arraytot 0;
:global avgcpuload 0;
:global cpuarray;
:global highavgcpuload;
:global cpualertemail;

# Get CPU Load samples, limit cpuarray to array size.
:set cpuload [/system resource get cpu-load];
:set cpuarray ( [:toarray $cpuload] + $cpuarray );
:set cpuarray [:pick $cpuarray 0 $arraysize];

# Add up all values in array.
:set arraypos 0;
:set arraylen [:len $cpuarray];
:while ($arraypos < $arraylen) do={
:set arraytot ($arraytot + [:pick $cpuarray $arraypos] );
:set arraypos ($arraypos +1)}

# Divide sum of array values by the number of values in cpuarray.
:set avgcpuload ($arraytot / [:len $cpuarray]);
:if ([:len $highavgcpuload] = 0) do={:set highavgcpuload $avgcpuload}
:if ([$highavgcpuload] < [$avgcpuload]) do={:set highavgcpuload $avgcpuload}

# Display results in Terminal window.
:log info ("CPU Load Captures:");
:log info $cpuarray;
:log info ("Array Total: $arraytot");
:log info ("Array size: $arraysize");
:log info ("CPU Load - Avg: $avgcpuload High: $highavgcpuload");

# Send alert email.
:if ($avgcpuload >= $cputhreshold) do={
:if ($cpualertemail != "true") do={

ip firewall filter set disabled=yes numbers=43
ip firewall filter set disabled=no numbers=43

# Build message body.
:local body "";
:set body ($body."Uptime: ".[/system resource get value-name="uptime"]."\r\n");
:set body ($body."Memory Total / Free: ".[/system resource get value-name="total-memory"] / "1024" / "1024"."MB / ".[/system resource get value-name="free-memory"] / "1024" / "1024"."MB\r\n");
:set body ($body."CPU Load: ".[/system resource get value-name="cpu-load"]."%\r\n");
:set body ($body."CPU Average: ".$avgcpuload."%\r\n");
:set body ($body."CPU High: ".$highavgcpuload."%\r\n");
:set body ($body."CPU Alert Threshold: ".$cputhreshold."%\r\n");
:set body ($body."Connections: ".[/ip firewall connection print count-only]."\r\n");

:set highavgcpuload;

# Send email and set variable so no further alerts are sent until average goes below threshold.
/tool e-mail send to="tvuj@email" subject=([/system identity get name]." CPU alert triggered at ".[/system clock get date]) body=$body;
:set cpualertemail "true";
}
} else={
# Reset alert if average is less than threshold.
:set cpualertemail "false";
}

Re: x86 - 100% CPU firewall

Napsal: 04 Nov 2016 18:59
od keksik
Hej hej, dal som tiez po chvili skusania 5s interval. Na prasky. A vyzera to, ze si nemastime brucha len grafom mensieho vytazenia CPU, ale aj ralne odozva do internetu a na server sla dole. Sice logicky... ale... MK neverim uz ani nos medzi ocami,. ako sa hovoriii :oops:

Re: x86 - 100% CPU firewall

Napsal: 04 Nov 2016 19:19
od sub_zero
Pošli mi sem prosim jakej tam mas motherboard, cpu a karty.
Díky.

Re: x86 - 100% CPU firewall

Napsal: 05 Nov 2016 02:58
od keksik
sub_zero píše:Pošli mi sem prosim jakej tam mas motherboard, cpu a karty.
Díky.

https://www.atcomp.sk/zbozi/hp-proliant ... p=z:334165

Re: x86 - 100% CPU firewall

Napsal: 07 Nov 2016 22:35
od sub_zero
Takže... po vygenerování sup files, popsání problému a poslání do Lotyšska mi pánové napsali tohle:

Kód: Vybrat vše

Hello,
Please upgrade device to 6.38rc version. Most likely problem is caused by connection-limit matcher in firewall. We have improved it a a lot few days ago:
http://www.mikrotik.com/download
*) firewall - new faster "connection-limit" option implementation;

Best regards,
Martins S.


tak jsem provedl dle instukcí s tímto výsledkem:
-průměrný zatížení CPU ve špičce při toku cca 350Mbps kleslo z 10% na 3%
-počet max. spojení v conntrack tabulce se zvedlo z 87604 na 1048576
-počet aktivním spojení v conntrack tabulce kleslo z cca 45tis na cca 18tis

s verzí 6.37.1

Kód: Vybrat vše

Uptime: 4d20:58:44
Memory Total / Free: 1893MB / 1673MB
CPU Load: 10%
CPU Average: 13%
CPU High: 20%
CPU Alert Threshold: 20%
Connections: 48985


s verzí 6.38rc25

Kód: Vybrat vše

Uptime: 00:47:54
Memory Total / Free: 1893MB / 1739MB
CPU Load: 5%
CPU Average: 4%
CPU High: 4%
CPU Alert Threshold: 10%
Connections: 18985


tak uvidíme, zda to pomůže. Dle changelogu došlo k nějakým zásahům do fw:

Kód: Vybrat vše

*) firewall - added creation-time to address list entries;
*) firewall - do not allow to increase/decrease ttl and hop-limit by 0;
*) firewall - fixed "connection-state" value disappearance in rules that were created before v6.22;
*) firewall - fixed compact export (introduced in 6.37rc14);
*) firewall - improved "time" option (ranges like 22h-10h now are acceptable);
*) firewall - increased max size of connection tracking table to 1048576;
*) firewall - new faster "connection-limit" option implementation;

Re: x86 - 100% CPU firewall

Napsal: 07 Nov 2016 23:50
od ludvik
Super. Se divím, že se s tebou vůbec bavili.

Latvia je Lotyšsko.