Üdv!
Létezik, hogy a fail2ban ennyi memóriát eszik? :o
Processz ID Tulajdonos Méret Parancs
...
742 root 881640 kB /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock - ...
...
Ez ~860MB, ha jól látom. Csak ssh és 3db httpd (w00tw00t,http-dos,not-found) szabály van engedélyezve. (A nemrég itt a fórumon tárgyalt szabályok.)
Tényleg ennyit foglal? :o
A logfájlok nem nagyok:
1,1MB /var/log/secure*
7,5MB /var/log/httpd/*
update:
Az /etc/default/fail2ban-be berakott pl. "ulimit -s 256" nem segít, nem változik semmi. (centos 6.5 x64)
G.
- 4166 megtekintés
Hozzászólások
Ha jól értem, akkor a 1009m (VIRT) a teljes használat - mindent beleértve:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4477 root 20 0 1009m 9844 2600 S 0.0 0.5 0:12.89 fail2ban-server
A RES=9844 (kb) a fizikai memóriából foglalt tényleges mérete (rezidens).
A SHR=2600 (kb) a shared memória foglaltsági mérete.
- A hozzászóláshoz be kell jelentkezni
Szerintem a RES értéke a mérvadó...
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
Igen, erre jöttem rá én is. Csak az az 1GB zavar egy kicsit.
Honnan jön össze...(?)
- A hozzászóláshoz be kell jelentkezni
Passz :)
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
A VIRT azt jelenti, amennyit az OS a processz számára fenntart, de a processz azt még nem használja fel. A virtuális memória lényege, hogy a processznek nem kell tudnia, mennyi RAM van a gépben, mert azt az OS kezeli. Az OS a memória lefoglalási kérelemnél eldöntönti, van-e annyi fizikai RAM és szabad SWAP, hogy kielégítse a kérést. Ha nincs, akkor hibával visszadobja. Ha van, akkor azt mondja: szabad. De ez nem jelenti azt, hogy a program fel is használja a lefoglalt puffert.
Példa kód (test_malloc.c):
#include <stdio.h>
#include <stdlib.h>// 100 MB
#define ELEMENT_COUNT 26214400int main()
{
char line[256];
int *buffer;
int i;
int buffer_size;buffer_size = sizeof(int)*ELEMENT_COUNT;
printf("Before malloc. Press ENTER\n");
gets(line);// memoria lefoglalasa
buffer = (int *)malloc(buffer_size);
if (NULL == buffer)
{
perror("malloc");
}
printf("After malloc, before filling puffer. Press ENTERt\n");
gets(line);// puffer feltoltese
for (i=0; i< ELEMENT_COUNT;i++)
{
buffer[i]=127;
if ((i+1) % 1048576==0)
printf("%d done\n", i );
}printf("After filling up puffer. Press ENTER to quit\n");
gets(line);free(buffer);
return 0;
}
Fontos: a fenti kód csak példa, a gets() használata PROD kódban nem javasolt!
Fordítás: gcc ./test_malloc.c -o test_malloc
Ezután lefuttattam, kikerestem a PID-jét.
A "Before malloc" esetnél ezt mutatta a top (VIRT=4164, RES=356, SHR=276):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5058 szenti 20 0 4164 356 276 S 0 0.1 0:00.00 test_malloc
Az "After malloc" esetnél (VIRT=104m, RES=356, RES=276):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5058 szenti 20 0 104m 356 276 S 0 0.1 0:00.00 test_malloc
Miután feltöltötte a puffert adatokkal (VIRT=104m, RES=100m, SHR=400):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5058 szenti 20 0 104m 100m 400 S 0 34.1 0:00.11 test_malloc
Remélem, így már világos.
- A hozzászóláshoz be kell jelentkezni
Magyarul: A RES értéke adja meg azt, hogy mennyi a tényleges memóriahasználat az adott időpillanatban?
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
Úgy van.
- A hozzászóláshoz be kell jelentkezni
Köszönöm. Furcsáltam is azt az 1GB-ot. :)
Tehát elvileg ennyit engedne az OS neki foglalni.
- A hozzászóláshoz be kell jelentkezni