SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
Nginx | Apache | Varnish
Ricardo Martins
http://ricardomartins.com.br
Nginx
· Engine-X
· Servidor de Proxy Reverso para HTTP, HTTPS, SMTP, POP3 e IMAP. No
entanto, muito utilizado também como load balancer, servidor de cache HTTP e
WebServer.
· Escrito para quebrar a barreira C10k (http://kegel.com/c10k.html)
· Algoritmo baseado no funcionamento assíncrono e não-bloqueante de eventos
o que permite processar um número muito maior de pedidos em uma única (ou,
pelo menos, em muito poucas) thread(s). Desta forma, a principal vantagem é a
escalabilidade com pouco consumo de recursos.
Nginx
· Faz spawn de processos chamados de workers, onde cada um pode tratar
milhares de conexões. Os processos workers fazem isto através da
implementação de um mecanismo de looping que continuamente verifica e
processa eventos.
Nginx | Instalação
· yum install nginx | apt-get install nginx
Nginx | Estrutura do arquivo de configuração
· Consiste em modulos controlados por diretivas
· Pode possuir um único arquivo de configuração ou um arquivo principal com
include em outros
· Diretivas são divididas em diretivas simples e diretivas em blocos
· Simples: Consiste no nome e parâmetros, separados por espaços e
terminados com ;
· Em blocos: Similar à simples, porém termina um conjunto de instruções
adicionais entre chaves {}. Se uma diretiva em blocos possuir outras diretivas
dentro das chaves, é chamado de contexto (events, http, server e location).
Nginx | Estrutura do arquivo de configuração
· nginx.conf
Apache
· Servidor usado por 56% dos websites no mundo
· Inicialmente baseado em processo (mpm_prefork) onde cada conexão
simultânea requer uma thread, o que era pouco performático por conta do alto
overhead. Posteriormente com o lançamento do Apache2 foram inseridos novos
módulos de multi-processamento, permitindo a troca de como as requests são
tratadas: mpm_worker (com base em threads) e mpm_event (com base em
eventos).
Apache
· mpm_prefork: Faz o spawn de processos com uma única thread para tratar
cada request. Cada processo filho consegue gerenciar uma única conexão por
vez. Enquanto o número de requests for menor que o número de processos, o
MPM performa muito bem, no entanto caso o número de requests passe a ser
maior que o número de processos, a performance diminui bastante.
· mpm_worker: Faz o spawn de processos de modo que cada processo
consegue tratar múltiplas threads. Cada thread consegue gerenciar apenas
uma conexão. O uso de threads é mais eficiente que o de processos, fazendo
com que este módulo seja melhor que o anterior. Novas conexões podem usar
imediatamente uma thread livre ao invés de ter que esperar por um processo
livre.
Apache
· mpm_event: É similar o módulo worker em algumas situações, mas é
otimizado para lidar com conexões keep-alive. Quando se usa mpm_worker, a
conexão irá manter uma thread por todo tempo que a conexão estiver ativa, por
outro lado, quando se utiliza o mpm_event, ele irá manter as conexões ativas
reservando threads dedicadas para o tratamento de conexões keep-alive e
passando requests ativos para outras threads, o que evita ele que fique preso
com conexões keep-alive, permitindo uma execução mais rápida.
Apache | Estrutura do arquivo de configuração
· De modo geral a configuração é similar ao Nginx.
· Pode possuir toda a configuração em um arquivo principal, ou utilizar includes
com outros arquivos para configurações individuais/específicas;
Apache | Estrutura do arquivo de configuração
Configuração básica: apache.conf.basic
Configuração mais completa: apache.conf.complex
Conteúdo estático e dinâmico
Ambos possuem maneiras diferentes de solicitações de conteúdo estático.
· Apache:
- Lida com conteúdos estáticos usando seus métodos baseados em arquivos
convencionais.
- Consegue processar conteúdo dinâminco através de mecanismos
internos para a linguagem em questão para cada instância worker, o que
permite executar conteúdo dinâmico internamente sem recorrer a componentes
externos. Estes macanismos internos podem ser habilitados através do
carregamento dinâmico de módulos no arquivo de configuração.
Conteúdo estático e dinâmico
· Nginx:
- Não possui mecanismos internos para processar conteúdo dinâmico
nativamente. Para processar requisições PHP por exemplo, ele precisa repassar
a requisição para um mecanismo externo executar e aguardar o conteúdo
renderizado ser trazido de volta. Isto pode resultar em um delay para o cliente.
- Esta comunicação precisa ser configurada entre o Nginx e um dos
seguintes protocolos que o Nginx saiba tratar: http, FastCGI, SCGI, uWSGI,
memcache.
Conteúdo estático e dinâmico
· Nginx:
- Entretanto, este modo de funcionamento pode trazer alguns benefícios.
Como o worker não possui um interpretador dinâmico embutido, todo este
overhead só é percebido em conteúdo dinâmico. Conteúdos estáticos podem
ser servidos de forma simples e direta e um interpretador só é acionado quando
necessário.
Varnish
· Um serviço que fica à frente do Servidor Web fazendo uma ponte entre o
usuário e o servidor, da mesma forma que um proxy reverso.
· Acelera uma conexão HTTP analisando conteúdos mais acessados e
armazenando uma cópia em cache (RAM).
· O servidor Web só é acessado quando o conteúdo do cache no Varnish expira
ou é alterado, diminuindo a carga no servidor Web. Por esta razão, em sites com
grandes volumes de acessos, é recomendável utilizá-lo ao invés de utilizar o
recurso de cache do próprio servidor Web por exemplo, para que o servidor web
lide apenas com o gerenciamento dos requests e não também do gerenciamento
do cache.
Varnish
· Por não sobrecarregar o servidor Web, permite um maior volume de visitas
simultâneas.
Varnish | Estrutura do arquivo de configuração
/etc/sysconfig/varnish
DAEMON_OPTS="-a :80
-T localhost:6082
-f /etc/varnish/default.vcl
-u varnish -g varnish
-S /etc/varnish/secret
-s file,/var/lib/varnish/varnish_storage.bin,2G"
Varnish | Estrutura do arquivo de configuração
/etc/varnish/default.vcl
backend default {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
if (req.request == "GET") {
return (lookup);
}
}
sub vcl_fetch {
set beresp.ttl = 30s;
return (deliver);
}
Varnish | Resposta do servidor
HTTP/1.1 200 OK
Server: nginx/1.2.9
Content-Type: text/html
Content-Length: 168
Accept-Ranges: bytes
Date: Wed, 11 Sep 2013 18:49:28 GMT
X-Varnish: 1487051254
Age: 0
Via: 1.1 varnish
Connection: keep-alive
Repare estas linhas:
Server: nginx/1.2.9
X-Varnish: 1487051254
Perguntas?

Mais conteúdo relacionado

Mais procurados

Aula 8 - Comunicação entre Componentes com SQS e SNS
Aula 8 - Comunicação entre Componentes com SQS e SNSAula 8 - Comunicação entre Componentes com SQS e SNS
Aula 8 - Comunicação entre Componentes com SQS e SNSEduardo de Lucena Falcão
 
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...Eduardo de Lucena Falcão
 
Por que Apache CloudStack?
Por que Apache CloudStack?Por que Apache CloudStack?
Por que Apache CloudStack?Marco Sinhoreli
 
Aula 6 - EC2, ELB, Auto Scaling, Cloud Watch
Aula 6 - EC2, ELB, Auto Scaling, Cloud WatchAula 6 - EC2, ELB, Auto Scaling, Cloud Watch
Aula 6 - EC2, ELB, Auto Scaling, Cloud WatchEduardo de Lucena Falcão
 
Amazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosAmazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosYros
 
Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Marcelo Dieder
 
Windows Server 2012 - Alem da virtualização
Windows Server 2012 - Alem da virtualizaçãoWindows Server 2012 - Alem da virtualização
Windows Server 2012 - Alem da virtualizaçãoFabio Hara
 
Transição para a nuvem: Desafios e Estratégias
Transição para a nuvem: Desafios e EstratégiasTransição para a nuvem: Desafios e Estratégias
Transição para a nuvem: Desafios e EstratégiasDenodo
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancadoAmazon Web Services LATAM
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveiselliando dias
 
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...Amazon Web Services LATAM
 
Windows Azure Pack - Visão Geral
Windows Azure Pack - Visão GeralWindows Azure Pack - Visão Geral
Windows Azure Pack - Visão GeralFabio Hara
 
Ws2012r2 hyper v
Ws2012r2 hyper vWs2012r2 hyper v
Ws2012r2 hyper vFabio Hara
 
Hyper-V - avançado
Hyper-V - avançadoHyper-V - avançado
Hyper-V - avançadoFabio Hara
 
windows server 2012 e windows 8 = melhores juntos
windows server 2012 e windows 8 = melhores juntoswindows server 2012 e windows 8 = melhores juntos
windows server 2012 e windows 8 = melhores juntosFabio Hara
 

Mais procurados (20)

Introduction to Cloud Computing
Introduction to Cloud ComputingIntroduction to Cloud Computing
Introduction to Cloud Computing
 
Aula 8 - Comunicação entre Componentes com SQS e SNS
Aula 8 - Comunicação entre Componentes com SQS e SNSAula 8 - Comunicação entre Componentes com SQS e SNS
Aula 8 - Comunicação entre Componentes com SQS e SNS
 
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
Aula 7 - Hands On - Configurando nossa aplicação na AWS com EC2, Elastic Load...
 
Por que Apache CloudStack?
Por que Apache CloudStack?Por que Apache CloudStack?
Por que Apache CloudStack?
 
Aula 3 - Introdução a cloud computing
Aula 3 - Introdução a cloud computingAula 3 - Introdução a cloud computing
Aula 3 - Introdução a cloud computing
 
Aula 6 - EC2, ELB, Auto Scaling, Cloud Watch
Aula 6 - EC2, ELB, Auto Scaling, Cloud WatchAula 6 - EC2, ELB, Auto Scaling, Cloud Watch
Aula 6 - EC2, ELB, Auto Scaling, Cloud Watch
 
Amazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosAmazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e Beneficios
 
Azure @ Rio Cloud Meetup
Azure @ Rio Cloud MeetupAzure @ Rio Cloud Meetup
Azure @ Rio Cloud Meetup
 
Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013
 
Windows Server 2012 - Alem da virtualização
Windows Server 2012 - Alem da virtualizaçãoWindows Server 2012 - Alem da virtualização
Windows Server 2012 - Alem da virtualização
 
Transição para a nuvem: Desafios e Estratégias
Transição para a nuvem: Desafios e EstratégiasTransição para a nuvem: Desafios e Estratégias
Transição para a nuvem: Desafios e Estratégias
 
Melhores Práticas no Uso da Nuvem AWS
Melhores Práticas no Uso da Nuvem AWSMelhores Práticas no Uso da Nuvem AWS
Melhores Práticas no Uso da Nuvem AWS
 
Aws sao paulo summit 2015 elasti cache avancado
Aws sao paulo summit 2015   elasti cache avancadoAws sao paulo summit 2015   elasti cache avancado
Aws sao paulo summit 2015 elasti cache avancado
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
 
Windows Azure Pack - Visão Geral
Windows Azure Pack - Visão GeralWindows Azure Pack - Visão Geral
Windows Azure Pack - Visão Geral
 
A plataforma Azure da Microsoft
A plataforma Azure da MicrosoftA plataforma Azure da Microsoft
A plataforma Azure da Microsoft
 
Ws2012r2 hyper v
Ws2012r2 hyper vWs2012r2 hyper v
Ws2012r2 hyper v
 
Hyper-V - avançado
Hyper-V - avançadoHyper-V - avançado
Hyper-V - avançado
 
windows server 2012 e windows 8 = melhores juntos
windows server 2012 e windows 8 = melhores juntoswindows server 2012 e windows 8 = melhores juntos
windows server 2012 e windows 8 = melhores juntos
 

Destaque

Xen Summit 2010 - globo.com
Xen Summit 2010 - globo.comXen Summit 2010 - globo.com
Xen Summit 2010 - globo.comMarco Sinhoreli
 
Xen Summit 2011 - Xen in the Cloud - globo.com
Xen Summit 2011 - Xen in the Cloud - globo.comXen Summit 2011 - Xen in the Cloud - globo.com
Xen Summit 2011 - Xen in the Cloud - globo.comMarco Sinhoreli
 
Cloud Summit Brazil 2011 - Construindo nuvens com Xen
Cloud Summit Brazil 2011 - Construindo nuvens com XenCloud Summit Brazil 2011 - Construindo nuvens com Xen
Cloud Summit Brazil 2011 - Construindo nuvens com XenMarco Sinhoreli
 
Approaches to enable the OSPF protocol in Apache CloudStack
Approaches to enable the OSPF protocol in Apache CloudStackApproaches to enable the OSPF protocol in Apache CloudStack
Approaches to enable the OSPF protocol in Apache CloudStackMarco Sinhoreli
 
CloudStack hands-on workshop @ DevOpsDays Amsterdam 2015
CloudStack hands-on workshop @ DevOpsDays Amsterdam 2015CloudStack hands-on workshop @ DevOpsDays Amsterdam 2015
CloudStack hands-on workshop @ DevOpsDays Amsterdam 2015Remi Bergsma
 
The Mission Critical Cloud
The Mission Critical CloudThe Mission Critical Cloud
The Mission Critical CloudRemi Bergsma
 
The Mission Critical Cloud @ Apache CloudStack meetup Amsterdam June 2015
The Mission Critical Cloud @ Apache CloudStack meetup Amsterdam June 2015The Mission Critical Cloud @ Apache CloudStack meetup Amsterdam June 2015
The Mission Critical Cloud @ Apache CloudStack meetup Amsterdam June 2015Remi Bergsma
 

Destaque (19)

Computação em nuvem
Computação em nuvemComputação em nuvem
Computação em nuvem
 
Computação em Nuvem
Computação em NuvemComputação em Nuvem
Computação em Nuvem
 
Xen Summit 2010 - globo.com
Xen Summit 2010 - globo.comXen Summit 2010 - globo.com
Xen Summit 2010 - globo.com
 
Xen Summit 2011 - Xen in the Cloud - globo.com
Xen Summit 2011 - Xen in the Cloud - globo.comXen Summit 2011 - Xen in the Cloud - globo.com
Xen Summit 2011 - Xen in the Cloud - globo.com
 
Cloud Summit Brazil 2011 - Construindo nuvens com Xen
Cloud Summit Brazil 2011 - Construindo nuvens com XenCloud Summit Brazil 2011 - Construindo nuvens com Xen
Cloud Summit Brazil 2011 - Construindo nuvens com Xen
 
Approaches to enable the OSPF protocol in Apache CloudStack
Approaches to enable the OSPF protocol in Apache CloudStackApproaches to enable the OSPF protocol in Apache CloudStack
Approaches to enable the OSPF protocol in Apache CloudStack
 
Ari_Neto_Cloud_CONADC
Ari_Neto_Cloud_CONADCAri_Neto_Cloud_CONADC
Ari_Neto_Cloud_CONADC
 
Introduction to CloudStack: How to Deploy and Manage Infrastructure-as-a-Serv...
Introduction to CloudStack: How to Deploy and Manage Infrastructure-as-a-Serv...Introduction to CloudStack: How to Deploy and Manage Infrastructure-as-a-Serv...
Introduction to CloudStack: How to Deploy and Manage Infrastructure-as-a-Serv...
 
CloudStack Hyderabad Meetup: Using CloudStack to build IaaS clouds
CloudStack Hyderabad Meetup: Using CloudStack to build IaaS cloudsCloudStack Hyderabad Meetup: Using CloudStack to build IaaS clouds
CloudStack Hyderabad Meetup: Using CloudStack to build IaaS clouds
 
CloudStack Hyderabad Meetup: How the Apache community works
CloudStack Hyderabad Meetup: How the Apache community worksCloudStack Hyderabad Meetup: How the Apache community works
CloudStack Hyderabad Meetup: How the Apache community works
 
vBACD July 2012 - Scaling Storage with Ceph
vBACD July 2012 - Scaling Storage with CephvBACD July 2012 - Scaling Storage with Ceph
vBACD July 2012 - Scaling Storage with Ceph
 
vBACD- July 2012 - Crash Course in Open Source Cloud Computing
vBACD- July 2012 - Crash Course in Open Source Cloud ComputingvBACD- July 2012 - Crash Course in Open Source Cloud Computing
vBACD- July 2012 - Crash Course in Open Source Cloud Computing
 
CloudStack technical overview
CloudStack technical overviewCloudStack technical overview
CloudStack technical overview
 
vBACD July 2012 - Xen Cloud Platform
vBACD July 2012 - Xen Cloud PlatformvBACD July 2012 - Xen Cloud Platform
vBACD July 2012 - Xen Cloud Platform
 
vBACD July 2012 - Deploying Private PaaS with ActiveState Stackato
vBACD July 2012 - Deploying Private PaaS with ActiveState StackatovBACD July 2012 - Deploying Private PaaS with ActiveState Stackato
vBACD July 2012 - Deploying Private PaaS with ActiveState Stackato
 
CloudStack Hyderabad Meetup: Migrating applications to IaaS clouds
CloudStack Hyderabad Meetup: Migrating applications to IaaS cloudsCloudStack Hyderabad Meetup: Migrating applications to IaaS clouds
CloudStack Hyderabad Meetup: Migrating applications to IaaS clouds
 
CloudStack hands-on workshop @ DevOpsDays Amsterdam 2015
CloudStack hands-on workshop @ DevOpsDays Amsterdam 2015CloudStack hands-on workshop @ DevOpsDays Amsterdam 2015
CloudStack hands-on workshop @ DevOpsDays Amsterdam 2015
 
The Mission Critical Cloud
The Mission Critical CloudThe Mission Critical Cloud
The Mission Critical Cloud
 
The Mission Critical Cloud @ Apache CloudStack meetup Amsterdam June 2015
The Mission Critical Cloud @ Apache CloudStack meetup Amsterdam June 2015The Mission Critical Cloud @ Apache CloudStack meetup Amsterdam June 2015
The Mission Critical Cloud @ Apache CloudStack meetup Amsterdam June 2015
 

Semelhante a Nginx vs Apache vs Varnish

Soluções de Web Caching e Web Acceleration - Domingos Parra Novo
Soluções de Web Caching e Web Acceleration - Domingos Parra NovoSoluções de Web Caching e Web Acceleration - Domingos Parra Novo
Soluções de Web Caching e Web Acceleration - Domingos Parra NovoTchelinux
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheDell Technologies
 
Slides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas DistribuídosSlides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas Distribuídosvinycesar
 
Arquitetura web e o php
Arquitetura web e o phpArquitetura web e o php
Arquitetura web e o phpsecomp2011
 
Sistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebSistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebRafael Chagas
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
Descobrindo o Nginx - Um servidor web de alta performance
Descobrindo o Nginx - Um servidor web de alta performanceDescobrindo o Nginx - Um servidor web de alta performance
Descobrindo o Nginx - Um servidor web de alta performanceGustavo Ciello
 
Memcached - Uma alternativa de cache para arquiteturas de alta escalabilidade
Memcached  - Uma alternativa de cache para arquiteturas de alta escalabilidade Memcached  - Uma alternativa de cache para arquiteturas de alta escalabilidade
Memcached - Uma alternativa de cache para arquiteturas de alta escalabilidade Felipe Bergamaschi
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdfRubenManhia
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressJulian Fernandes
 
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Vinicius Pulgatti
 

Semelhante a Nginx vs Apache vs Varnish (20)

Soluções de Web Caching e Web Acceleration - Domingos Parra Novo
Soluções de Web Caching e Web Acceleration - Domingos Parra NovoSoluções de Web Caching e Web Acceleration - Domingos Parra Novo
Soluções de Web Caching e Web Acceleration - Domingos Parra Novo
 
Web seminario varnish
Web seminario varnishWeb seminario varnish
Web seminario varnish
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+Apache
 
Slides nginx
Slides nginxSlides nginx
Slides nginx
 
Slides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas DistribuídosSlides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas Distribuídos
 
Apache
ApacheApache
Apache
 
Arquitetura web e o php
Arquitetura web e o phpArquitetura web e o php
Arquitetura web e o php
 
Sistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebSistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na Web
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Descobrindo o Nginx - Um servidor web de alta performance
Descobrindo o Nginx - Um servidor web de alta performanceDescobrindo o Nginx - Um servidor web de alta performance
Descobrindo o Nginx - Um servidor web de alta performance
 
Apache htaccess
Apache htaccessApache htaccess
Apache htaccess
 
Cflp t017
Cflp t017Cflp t017
Cflp t017
 
Memcached - Uma alternativa de cache para arquiteturas de alta escalabilidade
Memcached  - Uma alternativa de cache para arquiteturas de alta escalabilidade Memcached  - Uma alternativa de cache para arquiteturas de alta escalabilidade
Memcached - Uma alternativa de cache para arquiteturas de alta escalabilidade
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPress
 
JavaEE
JavaEEJavaEE
JavaEE
 
Aula 1
Aula 1Aula 1
Aula 1
 
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
 

Nginx vs Apache vs Varnish

  • 1. Nginx | Apache | Varnish Ricardo Martins http://ricardomartins.com.br
  • 2. Nginx · Engine-X · Servidor de Proxy Reverso para HTTP, HTTPS, SMTP, POP3 e IMAP. No entanto, muito utilizado também como load balancer, servidor de cache HTTP e WebServer. · Escrito para quebrar a barreira C10k (http://kegel.com/c10k.html) · Algoritmo baseado no funcionamento assíncrono e não-bloqueante de eventos o que permite processar um número muito maior de pedidos em uma única (ou, pelo menos, em muito poucas) thread(s). Desta forma, a principal vantagem é a escalabilidade com pouco consumo de recursos.
  • 3. Nginx · Faz spawn de processos chamados de workers, onde cada um pode tratar milhares de conexões. Os processos workers fazem isto através da implementação de um mecanismo de looping que continuamente verifica e processa eventos.
  • 4. Nginx | Instalação · yum install nginx | apt-get install nginx
  • 5. Nginx | Estrutura do arquivo de configuração · Consiste em modulos controlados por diretivas · Pode possuir um único arquivo de configuração ou um arquivo principal com include em outros · Diretivas são divididas em diretivas simples e diretivas em blocos · Simples: Consiste no nome e parâmetros, separados por espaços e terminados com ; · Em blocos: Similar à simples, porém termina um conjunto de instruções adicionais entre chaves {}. Se uma diretiva em blocos possuir outras diretivas dentro das chaves, é chamado de contexto (events, http, server e location).
  • 6. Nginx | Estrutura do arquivo de configuração · nginx.conf
  • 7. Apache · Servidor usado por 56% dos websites no mundo · Inicialmente baseado em processo (mpm_prefork) onde cada conexão simultânea requer uma thread, o que era pouco performático por conta do alto overhead. Posteriormente com o lançamento do Apache2 foram inseridos novos módulos de multi-processamento, permitindo a troca de como as requests são tratadas: mpm_worker (com base em threads) e mpm_event (com base em eventos).
  • 8. Apache · mpm_prefork: Faz o spawn de processos com uma única thread para tratar cada request. Cada processo filho consegue gerenciar uma única conexão por vez. Enquanto o número de requests for menor que o número de processos, o MPM performa muito bem, no entanto caso o número de requests passe a ser maior que o número de processos, a performance diminui bastante. · mpm_worker: Faz o spawn de processos de modo que cada processo consegue tratar múltiplas threads. Cada thread consegue gerenciar apenas uma conexão. O uso de threads é mais eficiente que o de processos, fazendo com que este módulo seja melhor que o anterior. Novas conexões podem usar imediatamente uma thread livre ao invés de ter que esperar por um processo livre.
  • 9. Apache · mpm_event: É similar o módulo worker em algumas situações, mas é otimizado para lidar com conexões keep-alive. Quando se usa mpm_worker, a conexão irá manter uma thread por todo tempo que a conexão estiver ativa, por outro lado, quando se utiliza o mpm_event, ele irá manter as conexões ativas reservando threads dedicadas para o tratamento de conexões keep-alive e passando requests ativos para outras threads, o que evita ele que fique preso com conexões keep-alive, permitindo uma execução mais rápida.
  • 10. Apache | Estrutura do arquivo de configuração · De modo geral a configuração é similar ao Nginx. · Pode possuir toda a configuração em um arquivo principal, ou utilizar includes com outros arquivos para configurações individuais/específicas;
  • 11. Apache | Estrutura do arquivo de configuração Configuração básica: apache.conf.basic Configuração mais completa: apache.conf.complex
  • 12. Conteúdo estático e dinâmico Ambos possuem maneiras diferentes de solicitações de conteúdo estático. · Apache: - Lida com conteúdos estáticos usando seus métodos baseados em arquivos convencionais. - Consegue processar conteúdo dinâminco através de mecanismos internos para a linguagem em questão para cada instância worker, o que permite executar conteúdo dinâmico internamente sem recorrer a componentes externos. Estes macanismos internos podem ser habilitados através do carregamento dinâmico de módulos no arquivo de configuração.
  • 13. Conteúdo estático e dinâmico · Nginx: - Não possui mecanismos internos para processar conteúdo dinâmico nativamente. Para processar requisições PHP por exemplo, ele precisa repassar a requisição para um mecanismo externo executar e aguardar o conteúdo renderizado ser trazido de volta. Isto pode resultar em um delay para o cliente. - Esta comunicação precisa ser configurada entre o Nginx e um dos seguintes protocolos que o Nginx saiba tratar: http, FastCGI, SCGI, uWSGI, memcache.
  • 14. Conteúdo estático e dinâmico · Nginx: - Entretanto, este modo de funcionamento pode trazer alguns benefícios. Como o worker não possui um interpretador dinâmico embutido, todo este overhead só é percebido em conteúdo dinâmico. Conteúdos estáticos podem ser servidos de forma simples e direta e um interpretador só é acionado quando necessário.
  • 15. Varnish · Um serviço que fica à frente do Servidor Web fazendo uma ponte entre o usuário e o servidor, da mesma forma que um proxy reverso. · Acelera uma conexão HTTP analisando conteúdos mais acessados e armazenando uma cópia em cache (RAM). · O servidor Web só é acessado quando o conteúdo do cache no Varnish expira ou é alterado, diminuindo a carga no servidor Web. Por esta razão, em sites com grandes volumes de acessos, é recomendável utilizá-lo ao invés de utilizar o recurso de cache do próprio servidor Web por exemplo, para que o servidor web lide apenas com o gerenciamento dos requests e não também do gerenciamento do cache.
  • 16. Varnish · Por não sobrecarregar o servidor Web, permite um maior volume de visitas simultâneas.
  • 17. Varnish | Estrutura do arquivo de configuração /etc/sysconfig/varnish DAEMON_OPTS="-a :80 -T localhost:6082 -f /etc/varnish/default.vcl -u varnish -g varnish -S /etc/varnish/secret -s file,/var/lib/varnish/varnish_storage.bin,2G"
  • 18. Varnish | Estrutura do arquivo de configuração /etc/varnish/default.vcl backend default { .host = "127.0.0.1"; .port = "8080"; } sub vcl_recv { if (req.request == "GET") { return (lookup); } } sub vcl_fetch { set beresp.ttl = 30s; return (deliver); }
  • 19. Varnish | Resposta do servidor HTTP/1.1 200 OK Server: nginx/1.2.9 Content-Type: text/html Content-Length: 168 Accept-Ranges: bytes Date: Wed, 11 Sep 2013 18:49:28 GMT X-Varnish: 1487051254 Age: 0 Via: 1.1 varnish Connection: keep-alive Repare estas linhas: Server: nginx/1.2.9 X-Varnish: 1487051254