TTFB enorme intermitente em páginas dinâmicas / estáticas

1

Temos um VPS (2 GB de RAM / 2 vCPUs). Isso é servir um fórum phpBB no PHP 5.6, Centos 6, Apache 2.2. No entanto, por vezes, o fórum é super lento para responder. Usando o navegador de rede do Chrome, descobri que o TTFB às vezes vai até 30 segundos. Estranhamente, também os itens em cache têm esse problema. (veja screenshot)

Eu já tentei:

  • o carregamento do servidor durante o problema não está acima de 0,20 e há memória livre.
  • Eu fiz o ping no servidor: cerca de 10 ms

  • instale o zend opcache (99.9% acessos)

  • instale o memcached ( estatísticas )
  • Eu instalei o mytop para ver se o MySQL é o problema, mas pelo que entendi, o MySQL não está fazendo muito

    Consultas: 6,0 M qps: 26 Lento: 4,0 Se / In / Up / De (%): 75/02/08/01          qps agora: 2 qps lentas: 0.0 Threads: 1 (1/0) 00/00/00/00 Eficiência chave: 99,4% Bps in / out: 4.4k / 51.1k Agora in / out: 48.4 / 7.5k

Como nem sempre é o caso, a única maneira de replicar esse problema é enviar spam para a F5, embora eu não tenha certeza de que isso esteja realmente replicando o problema. Eu poderia em menor extensão (2s ttfb) replicar isso com a mesma página copiada em html (removida a parte dinâmica).

link

Eu tenho keepalive em (100 max, 15 segundos), com maxclients 30. Para onde eu vou daqui?

    
por SvennD 06.01.2016 / 14:40

2 respostas

0

O problema foi um problema combinado:

  • o SSD RAID5 entregou velocidades de 12,5mb / s em um dd, muito abaixo do que se esperaria (atualmente: 300-600 mb / s)
  • o firewall também foi um pouco rigoroso, já que as conexões foram bloqueadas para 100 / min com uma explosão de 200 / min. (iptables)

O VPS foi movido para um IO melhor, e o firewall não foi definido como estritamente e o problema foi resolvido. Eu também desabilitei o memcached já que o MySQL claramente não era o ponto de estrangulamento)

    
por 14.01.2016 / 10:57
1

Where do I go from here ?

Criação de perfil. Existem várias ferramentas de perfil PHP. Eu gosto do blackfire.io - ele irá identificar com facilidade e claramente quaisquer gargalos, seja código PHP, consultas MySQL ou uma combinação dos dois. Sem perfil, você está aleatoriamente tentando coisas no escuro.

Em vez de F5ing, você também pode fazer alguns testes de carga com ferramentas como ab, yandex tank, Siege etc.

Outra coisa a fazer para verificar se este problema é real é testar em webpagetest.org e repetir o teste várias vezes (configurações avançadas, número de execuções). Ou através de sua API.

    
por 06.01.2016 / 15:06