[FUG-BR] teste do mod_evasive rodando lento na VM

vic vic em wa.pro.br
Terça Setembro 10 18:49:39 BRT 2013


Em 2013-09-10 17:59, Marcelo Gondim escreveu:
> Em 10/09/13 17:40, vic escreveu:
>> Em 2013-09-10 15:26, Marcelo Gondim escreveu:
>>> Em 10/09/13 10:16, vic escreveu:
>>>> Em 2013-09-10 9:23, Marcelo Gondim escreveu:
>>>>> Pessoal,
>>>>> 
>>>>> Sei que muitos aqui conhecem o mod_evasive pro apache que no 
>>>>> FreeBSD
>>>>> é
>>>>> o
>>>>> pacote ap22-mod_evasive.
>>>>> Ele vem com um script de teste que sempre utilizei pra checar se o
>>>>> mod_evasive tá legal:
>>>>> 
>>>>> test.pl:
>>>>> 
>>>>> #!/usr/bin/perl
>>>>> # test.pl: small script to test mod_dosevasive's effectiveness
>>>>> use IO::Socket;
>>>>> use strict;
>>>>> for(0..100) {
>>>>>      my($response);
>>>>>      my($SOCKET) = new IO::Socket::INET( Proto   => "tcp",
>>>>>                                          PeerAddr=> 
>>>>> "127.0.0.1:80");
>>>>>      if (! defined $SOCKET) { die $!; }
>>>>>      print $SOCKET "GET /?$_ HTTP/1.0\n\n";
>>>>>      $response = <$SOCKET>;
>>>>>      print $response;
>>>>>      close($SOCKET);
>>>>> }
>>>>> 
>>>>> Só que quando rodo numa VM com FreeBSD ele abre as conexões
>>>>> lentamente,
>>>>> fazendo com que o teste não funcione. Fiz o mesmo teste em um 
>>>>> FreeBSD
>>>>> sem ser VM e rodou mais rápido e consegui fazer os testes. Fui
>>>>> comparar
>>>>> com uma outra máquina com Linux e rodou estupidamente mais rápido.
>>>>> Logicamente que diferenças de processamento podem ser uma das 
>>>>> causas
>>>>> mas
>>>>> porque rodou tão lento numa VM é que não descobri ainda.
>>>>>     Alguém tem alguma ideia?
>>>>> 
>>>>> Grande abraço
>>>> Suponho que sua aquela sua VM em Xen. Por acaso você tem um firewall
>>>> PF
>>>> na VM? Se sim tente:
>>>> 
>>>> ifconfig xn0 -tso
>>>> sysctl -w net.inet.tcp.tso=0
>>>> 
>>>> Referências:
>>>> 
>>>> http://www.freebsd.org/cgi/query-pr.cgi?pr=154428
>>>> http://www.freebsd.org/cgi/query-pr.cgi?pr=135178
>>>> 
>>>> Além disso, se você não compilou o kernel XENHVM, faça um teste com
>>>> ele
>>>> e mude a configuração do xen na vif para usar o type=netfront
>>>> 
>>> É vic compilei com o XENHVM fiz as mudanças de disco e interface de
>>> rede
>>> e mesmo assim continua lento as conexões localhost do test.pl:
>>> 
>>> # df -h
>>> Filesystem     Size    Used   Avail Capacity  Mounted on
>>> /dev/xbd0p2      2G    190M    1.6G    10%    /
>>> devfs          1.0k    1.0k      0B   100%    /dev
>>> /dev/xbd0p4     58G     15G     37G    29%    /var
>>> /dev/xbd0p5     31G    6.0G     22G    21%    /usr
>>> /dev/xbd0p6      2G     16M    1.8G     1%    /tmp
>>> 
>>> xn0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu
>>> 1500
>>>       options=503<RXCSUM,TXCSUM,TSO4,LRO>
>>>       ether 00:16:3e:02:9d:d6
>>>       inet xx.xxx.xxx.xx netmask 0xfffffff8 broadcast 67.212.89.79
>>>       inet6 fe80::216:3eff:fe02:9dd6%xn0 prefixlen 64 scopeid 0x6
>>>       nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>>>       media: Ethernet manual
>>>       status: active
>>> 
>>> # uname -a
>>> FreeBSD xxxx.xxx.xxx.xx 9.2-PRERELEASE FreeBSD 9.2-PRERELEASE #0
>>> r255410M: Tue Sep 10 14:58:33 BRT 2013
>>> root em xxxx.xxx.xxx.xx:/usr/obj/usr/src/sys/XENHVM  amd64
>>> 
>>> Quem tiver a curiosidade de fazer esse teste nas mesmas condições que
>>> eu
>>> aqui, seria interessante. Abaixo os dados:
>>> 
>>> No servidor Debian 7 amd64
>>> ii  libxen-4.1                         4.1.4-3+deb7u1 amd64
>>> Public libs for Xen
>>> ii  libxenstore3.0                     4.1.4-3+deb7u1 amd64
>>> Xenstore communications library for Xen
>>> ii  xen-hypervisor-4.1-amd64           4.1.4-3+deb7u1 amd64        
>>> Xen
>>> Hypervisor on AMD64
>>> ii  xen-linux-system-3.2.0-4-amd64     3.2.46-1+deb7u1 amd64        
>>> Xen
>>> system with Linux 3.2 on 64-bit PCs (meta-package)
>>> ii  xen-linux-system-amd64             3.2+46 amd64        Xen system
>>> with Linux for 64-bit PCs (meta-package)
>>> ii  xen-system-amd64                   4.1.4-3+deb7u1 amd64        
>>> Xen
>>> System on AMD64 (meta-package)
>>> ii  xen-tools                          4.3.1-1 all          Tools to
>>> manage Xen virtual servers
>>> ii  xen-utils-4.1                      4.1.4-3+deb7u1 amd64        
>>> XEN
>>> administrative tools
>>> ii  xen-utils-common                   4.1.4-3+deb7u1 all          
>>> Xen
>>> administrative tools - common files
>>> ii  xenstore-utils                     4.1.4-3+deb7u1 amd64
>>> Xenstore utilities for Xen
>>> 
>>> Arquivo conf da VM:
>>> 
>>> kernel = '/usr/lib/xen-4.1/boot/hvmloader'
>>> builder = 'hvm'
>>> vcpus = 4
>>> memory = 2048
>>> shadow_memory = 8
>>> name = 'freeba'
>>> vif = [ 'type=netfront, model=e1000, bridge=xenbr0', ]
>>> #vif = [ 'type=ioemu, bridge=xenbr0, mac=00:00:00:ff:fe:01' ]
>>> disk = [
>>> 'file:/home/xen/domains/freeba/freeba.img,xvda,w',
>>> 'file:/home/xen/domains/freeba/FreeBSD-9.2-PRERELEASE-amd64-20130831-r255108-disc1.iso,xvdc:cdrom,r'
>>> ]
>>> device_model = '/usr/lib/xen-4.1/bin/qemu-dm'
>>> boot = 'cd'
>>> sdl=0
>>> vnc = '1'
>>> vncviewer = '1'
>>> vnclisten = "0.0.0.0"
>>> vncpasswd = 'songamonga'
>>> stdvga=0
>>> serial='pty'
>>> usbdevice='tablet'
>>> on_poweroff = 'destroy'
>>> on_reboot   = 'restart'
>>> on_crash    = 'restart'
>>> 
>>> Pacote do mod_evasive no FreeBSD:  www/mod_evasive -
>>> ap22-mod_evasive-1.10.1_1      An Apache module to try to protect the
>>> HTTP Server from DoS/DDoS attacks
>>> 
>>> []'s
>>> Gondim
>> Eu instalei o www/apache22 num 9.1 XENVHM e rodei o test.pl e o ab -kc
>> 10 -t 30 http://IP_VM/ a partir do meu computador.
>> 
>> Depois eu instalei e habilitei o mod_evasive e refiz os teste. Ambos
>> rodaram... claro que o test.pl teve uns 403 e o ab não teve todas as
>> requisições respondidas.. mas isso era esperado. Todos os testes 
>> rodaram
>> rapidinho.
>> 
>> Na minha conf do xen não tem setado
>> 
>> shadow_memory
>> usbdevice
>> e o cdrom (afinal já instalei)
>> com 4Gb de memória
>> vcpus=2
>> 
>> O host é um Scientific Linux 6 com linux 3.8.7-1.el6xen.x86_64
>> 
> Oi vic mas você tem outras VMs rodando nesse servidor? Nesse aqui tem
> mais 2 VMs.
> Estranho mesmo. Tem como você me passar o seu kernel em anexo em pvt?
> Pra eu comparar e ver se tem algo habilitado demais aqui.
> Vou tentar também sem esses parâmetros acima.
> 
> []'s
> Gondim
> 

No servidor tem mais 2 VM, um FreeBSD 7.4 i386 (app legado), um 
Slackware 13.1 i386 (outro app legado) e esse FreeBSD 9.1 rodando apps 
em java.

Segue conf do kernel

include		GENERIC
ident		XENHVM

#
# Adaptive locks rely on a lock-free pointer read to determine the run 
state
# of the thread holding a lock when under contention; under a 
virtualisation
# system, the thread run state may not accurately reflect whether the 
thread
# (or rather its host VCPU) is actually executing.  As such, disable 
this
# optimisation.
#
options 	NO_ADAPTIVE_MUTEXES
options 	NO_ADAPTIVE_RWLOCKS
options 	NO_ADAPTIVE_SX

# Xen HVM support
options 	XENHVM
device		xenpci

cat /boot/loader.conf

# XEN console support
boot_multicons="YES"
boot_serial="YES"
comconsole_speed=9600
console="comconsole,vidconsole"

-- 
vic
choppnerd.com
donttrack.us | dontbubble.us


Mais detalhes sobre a lista de discussão freebsd