Long tempo lurker, pôster da primeira vez na rede do StackExchange.
Eu tenho trabalhado nisso nos últimos dois dias e li muitos tópicos e tentei muitas coisas, mas não vi absolutamente nenhum movimento. Aqui está a situação:
Eu configurei uma caixa EC2 de camada livre como uma máquina de teste no Ubuntu 14.04 com o LEMP, especificamente Nginx e PHP7 com o WordPress. Nós construímos o site e tudo funciona bem. Tem um TTFB de 505 milissegundos.
Eu configurei uma caixa Cloud Compute de camada gratuita como uma máquina de produção com a mesma configuração, mas o TTFB é de 14 segundos. Saiba que as especificações da caixa do Google são um pouco melhores que as do EC2. g1-small (1 vCPU, 1,7 GB de memória) vs. t2-micro (1 vCPU, 1 GB de memória). SSDs em ambos os lados.
Eu tentei muitas coisas, incluindo muitos dos métodos para diagnosticar problemas do TTFB que estão nesta resposta link . Eu também tentei aumentar a memória para PHP e WordPress. Eu tentei instalar pacotes e plugins que as pessoas têm sugerido para otimização perf. Estou lutando especificamente com o fato de que minha instância de teste não precisava disso. Antes de perguntar "por que você não faz tudo na AWS", saiba que o uso do Google Cloud Compute para produção é um requisito para esse projeto.
Nas discussões que tive com as pessoas, alguém disse que o Google Cloud não tem liberação de saída para veicular conteúdo antes que a resposta seja concluída. Alguém pode confirmar?
Agradecemos antecipadamente por qualquer insight que você possa oferecer ao me apontar na direção certa para resolver isso. Além disso, deixe-me saber quaisquer outros detalhes que eu possa oferecer para tornar isso mais fácil de resolver.
EDIT ONE: Respondendo as perguntas abaixo. Muito obrigado por se oferecer para ajudar.
Are the two servers in the same geographic location? How big is the difference?
A instância do EC2 está no leste dos EUA ou na Virgínia.
A instância do GCE está no US-West1a, que acredito estar no Oregon.
Estou em Nova York, portanto não há diferença geográfica suficiente para justificar um TTFB de 14 segundos. Além disso, as ferramentas que usei têm posições geográficas como Dallas (um ponto médio razoável entre as duas cidades) e também reportam o TTFB 14s.
First thing to work out is where the delay is. Please edit your question to >include a curl of the Google website, the matching Nginx access log entry, any >matching Nginx error log entry, and the PHP access / error logs. PHP access >logs need to be enabled. Also watch "top" while the curl is happening, and take >a representative screenshot. Finally, please share webpagetest.org tests of >both environments to demonstrate the problem, obfuscated if your domain names >are secret - web crawlers find all domains anyway. – Tim 3 hours ago
Eu não tenho pontos de reputação suficientes para postar uma imagem ou um link para outra imagem, mas quando corro o php-fpm7.0 e o mysqld popup.
PID EXP UTILIZADOR DE VÍDEO RES SHR S% CPU% MEM TEMPO + COMANDO
24625 www-data 20 0 374680 43352 30376 S 0,7 2,5 0: 00,90 php-fpm7,0
21244 mysql 20 0 870388 71088 11012 S 0,3 4,1 0: 10,57 mysqld
-
Entrada de registro de acesso ao Nginx
[07 / May / 2017: 06: 01: 58 +0000] "GET / HTTP / 1.1" 200 58528 "-" "curl / 7.35.0"
-
Entrada de registro de erros do Nginx
Nada de novo aqui com essa solicitação
- entrada de log do PHP Access
Nada nos registros do PHP-FPM.
- Entrada de log de erros do PHP
Nada desta solicitação, mas eu fiz uma solicitação de navegador antes e aqui está o que está no log lento (coloquei a janela em 5 segundos):
[07-May-2017 06:01:48] [pool www] pid 24625
script_filename = /var/www/html/wordpress/index.php
[0x00007fad55e12810] mysqli_real_connect() /var/www/html/wordpress/wp-
includes/wp-db.php:1540
[0x00007fad55e126f0] db_connect() /var/www/html/wordpress/wp-includes/wp-db.php:658
[0x00007fad55e12620] __construct() /var/www/html/wordpress/wp-content/themes/xxxx/inc/artist-products.php:7
[0x00007fad55e12590] edb_db_init() /var/www/html/wordpress/wp-content/themes/xxxx/inc/db/items.php:258
[0x00007fad55e124d0] edb_get_product_link() /var/www/html/wordpress/wp-content/themes/xxxx/inc/artist-products.php:23
[0x00007fad55e123c0] edb_display_frontpage_items() /var/www/html/wordpress/wp-content/themes/xxxx/page-templates/home.php:95
[0x00007fad55e121e0] [INCLUDE_OR_EVAL]() /var/www/html/wordpress/wp-includes/template-loader.php:74
[0x00007fad55e12140] [INCLUDE_OR_EVAL]() /var/www/html/wordpress/wp-blog-header.php:19
[0x00007fad55e120a0] [INCLUDE_OR_EVAL]() /var/www/html/wordpress/index.php:17
link
link
The most obvious thing to try would be to write a barebones hello world php >script and measure ttfb of that, if you haven't. If it's anywhere near 14s then >you have a problem that has nothing to do with wordpress or the database. >"Google Cloud doesn't have output flushing" applies to Google App Engine HTTP >responses, which are returned en bloc -- so this is not applicable to compute >instances.
Sim, eu fiz isso. Hello World e outros arquivos estáticos respondem rapidamente. O PHPInfo também responde rapidamente. Se bem me lembro, todos os arquivos simples e estáticos estavam em torno de 700 ms TTFB. Obrigado pelo esclarecimento sobre o flush de saída que só é relevante para o Google App Engine. Pelo menos eu sei que é uma solução simples que estou perdendo.
A única coisa que eu tenho visto que me dá qualquer coisa para trabalhar é o logging PHP lento.
[07-May-2017 00:56:39] [pool www] pid 24793
script_filename = /var/www/html/wordpress/index.php
[0x00007fad55e14810] mysqli_real_connect() /var/www/html/wordpress/wp-includes/wp-db.php:1540
[0x00007fad55e146f0] db_connect() /var/www/html/wordpress/wp-includes/wp-db.php:658
[0x00007fad55e14620] __construct() /var/www/html/wordpress/wp-content/themes/xxxx/inc/artist-products.php:7
[0x00007fad55e14590] edb_db_init() /var/www/html/wordpress/wp-content/themes/xxxx/inc/db/items.php:258
[0x00007fad55e144d0] edb_get_product_link() /var/www/html/wordpress/wp-content/themes/xxxx/inc/artist-products$
[0x00007fad55e143c0] edb_display_frontpage_items() /var/www/html/wordpress/wp-content/themes/xxxx/page-templat$
[0x00007fad55e141e0] [INCLUDE_OR_EVAL]() /var/www/html/wordpress/wp-includes/template-loader.php:74
[0x00007fad55e14140] [INCLUDE_OR_EVAL]() /var/www/html/wordpress/wp-blog-header.php:19
[0x00007fad55e140a0] [INCLUDE_OR_EVAL]() /var/www/html/wordpress/index.php:1
Isso me fez pensar que as consultas ao banco de dados são lentas, mas instalei o plugin de monitoramento de consultas para o WP e todas as consultas estão sendo executadas rapidamente.