Your SlideShare is downloading. ×
0
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Entregando conteúdo em ambientes extremos na JVM

746

Published on

Palestra apresentada no QCon SP em 05/08/2012.

Palestra apresentada no QCon SP em 05/08/2012.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
746
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Entregando conteúdo em ambientes extremos na JVM ROd
  • 2. ROdDesenvolvedor especialistaem arquiteturas de altaperformance relacionadas apublicação, busca e entregade conteúdo para o portalUOL. Mestre pelo IME-USPem 07/2012 =) @rzdrigo
  • 3. ObjetivoAumentar a disponibilidadeda entrega de conteúdo do Portal
  • 4. ObjetivoDiminuir acesso aosserviços de backend
  • 5. ObjetivoSimplificar a infraestrutura de entrega de conteúdo
  • 6. Objetivo Suportar múltiplosformatos do conteúdo na mesma URL
  • 7. noticias.uol.com.br
  • 8. noticias.uol.com.br
  • 9. noticias.uol.com.br
  • 10. MARRAKESH
  • 11. PremissasEstado imutávelDetecção de User AgentCacheMelhores práticas do HTTPProxy da engine de template
  • 12. Detecção de User AgentWURFL – Web patchFast detection – Bot – Desktop
  • 13. CacheCache replicado em todas as máquinas do poolSeparação entre conteúdo e máquina de estadoCache de conteúdo “gzipado”Bots não adicionam conteúdo no cache
  • 14. HttpHandlerContent-Encoding: gzipETag e Last-Modified – 11% da audiência ainda utiliza HTTP/1.0Cache-ControlConnection: Close
  • 15. Ambiente original
  • 16. Novo ambiente
  • 17. PRÉ PRODUÇÃO
  • 18. TestesTeste no hardware finalFerramentas: – HAProxy – ab, request-simulator, siege – visualvm e visualgc
  • 19. JVM-Xms == -Xmx-XX:+AggressiveOpts-XX:+UseAdaptiveSizePolicy-XX:+UseParNewGC-XX:ParallelGCThreads
  • 20. JVM-verbose:gc-XX:+PrintGCDetails-XX:+PrintGCDateStamps-Dnetworkaddress.cache.ttl-Dnetworkaddress.cache.negative.ttl
  • 21. EM PRODUÇÃO
  • 22. MigraçãoBeta com noticias.uol.com.brMigração de todos os dominios de conteúdoem 2 meses – 42 áreas principais – Mais de 80 dominios
  • 23. Apache DocRootApache envia redirect – /busca → /busca/Problema: Algumas funções JavaScript seapoiavam nesta “feature”Erro: /buscamontecarlo.htm → 404 Not Found
  • 24. Negando conexõesApós morte do Chico Anysio requisições nãoestabeleciamPico de 160k reqs/minuto por servidorPico de 3200 reqs/segundo por servidor
  • 25. Negando conexõesTentativas: – Aumento de threads do Apache – Pré alocação de threads do Apache – Testes com nginxSolução: ajustes nos valores do sysctlnet.ipv4.ip_local_port_range e net.ipv4.tcp_tw_reuse
  • 26. Long GC Pauses– Requisições tinham tempo alto de respostasem nenhum evento especial– Análise de gc.log– Full GCs levando 12 ~ 15 segundos, mesmoapós ajustes em pré produção
  • 27. Long GC Pauses– Após o solução do problema anterior asalterações do Apache não foram desfeitas– Threads pré alocadas fizeram o servidorcomeçar a consumir swap– Monitoração da swap desativada
  • 28. 500 Server Internal Error– Diversas requisições retornando 500– No mesmo momento outras retornando“200 OK” para o mesmo resource– Nenhuma mensagem de erro no log daaplicação
  • 29. 500 Server Internal Error Suspeita: Connection Pool do Jetty Análise: Sniffer entre Apache e Jetty Problema: – queryString no Apache 2.0.x não suportaUTF-8 – Somente IE realizava esta transformação
  • 30. Números15k ~ 150k reqs/min (230k no pico → 3833 req/s)98% cache hits125 Mbps (225 Mbps pico)55% de respostas “Not Modified” (304)Redução de consultas ao Sistema de busca – 500 → 250 queries/sec (-50%)
  • 31. Próximos passosSubstituir Jetty → NettyArmazenar uma semana de conteúdo emmemóriaIntegração com Metrics frameworkMigração de outros serviços para a plataforma
  • 32. Obrigado =)http://slideshare.net/rzdrigo/entregando-conteudo-em- ambientes-extremos-na-jvm
  • 33. Entregando conteúdo em ambientes extremos na JVM ROd

×