frontend Nginx e wp-admin / admin-ajax.php: erros de depuração 500

1

A cada hora eu estou começando a receber 500 erros no wp-admin e no wp-admin / admin-ajax.php em particular. Eu corro DSO + APC + Nginx (admin) + Apache. O Apache é executado na porta 8080 e no Nginx em 80.

O que eu fiz até agora:

  1. Comecei a investigar o debug.log e cuidei de alguns problemas fatais falhas que aconteceram de tempos em tempos
  2. Adicionei 0 */1 * * * /usr/sbin/tmpwatch -am 1 /tmp/nginx_client porque meu log estava indicando que tmp inodes foram todos usados e caiu nginx
  3. Inspecionou outros problemas e aumentou o memory_limit do PHP para 128M
  4. Por alguma razão, minha pasta wp-admin foi atribuída ao usuário 1001, que Eu mudei de volta para nobody: nobody (nginx atualmente é executado como ninguém)

Estou usando a seguinte configuração de vhosts para o frontend do Nginx:

# BEGIN W3TC Page Cache cache
location ~ /wp-content/cache/page_enhanced.*html$ {
    add_header Vary "Accept-Encoding, Cookie";
    add_header Pragma "no-cache";
    add_header Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate";
}
location ~ /wp-content/cache/page_enhanced.*gzip$ {
    gzip off;
    types {}
    default_type text/html;
    add_header Vary "Accept-Encoding, Cookie";
    add_header Pragma "no-cache";
    add_header Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate";
    add_header Content-Encoding gzip;
}
# END W3TC Page Cache cache
# BEGIN W3TC Page Cache core
#set $w3tc_rewrite 1;
set $w3tc_rewrite "";
if ($request_method = POST) {
    set $w3tc_rewrite 0;
}
if ($query_string != "") {
    set $w3tc_rewrite 0;
}
if ($http_cookie ~* "(comment_author|wp\-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle)") {
    set $w3tc_rewrite 0;
}
if ($http_user_agent ~* "(W3\ Total\ Cache/0\.9\.4)") {
    set $w3tc_rewrite 0;
}
if ($http_cookie ~* "(w3tc_preview)") {
    set $w3tc_rewrite _preview;
}
set $w3tc_enc "";
if ($http_accept_encoding ~ gzip) {
    set $w3tc_enc _gzip;
}
set $w3tc_ext "";
if (-f "$document_root/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_rewrite.html$w3tc_enc") {
    set $w3tc_ext .html;
}
if (-f "$document_root/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_rewrite.xml$w3tc_enc") {
    set $w3tc_ext .xml;
}
if ($w3tc_ext = "") {
  set $w3tc_rewrite 0;
}
#if ($w3tc_rewrite = 1) {
if ($w3tc_rewrite != 0) {
    rewrite .* "/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_rewrite$w3tc_ext$w3tc_enc" last;
}
# END W3TC Page Cache core

Estou excluindo o wp-admin - possível culpado aqui?

 # Don't cache uris containing the following segments
    if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-location$
        set $cache_uri 'null cache';
    }


 location / {
          error_page 405 = @backend;
          add_header X-Cache "HIT from Backend";
          proxy_pass http://backend:8080;
          include proxy.inc;
          include microcache.inc;
          }

A solução temporária está reiniciando o nginx. Eu estou usando um simples nginx.conf.

    
por mashup 09.04.2015 / 13:06

1 resposta

1

Embora não tenha conseguido reduzir o número de pontos com precisão, quero fazer um palpite aqui.

As coisas mais prováveis que me ajudaram a resolver isso em ordem:

  • 1) Aumentando o memory_limit na configuração do PHP e wp-config.php para 256. Você pode até tentar 512, embora isso possa causar outros problemas. Minhas suposição aqui é que uma das minhas consultas do MySQL é muito faminto por recursos que eu ainda não tinha otimizado e poderia ter causou o problema, isso ficou aparente ao olhar para /mysql/slow.log (você pode precisar ativar o registro lento de sql primeiro em /etc/my.cnf
  • 2) Ativando debug.log e depurando quaisquer erros críticos sem dizer
  • 3) Endereçando conflitos de IP do Nginx, verifique seus vhosts
  • 4) Whitelist admin-ajax.php em mod_security (removendo algumas regras) Você pode google várias regras que podem estar causando problemas, embora eu ache improvável que ele iria jogar um 502. Se fosse modsec, ele lançaria um 403 ou 40x

Se eu encontrar o problema novamente nos próximos dias ou encontrar a causa raiz, atualizarei novamente

    
por 09.04.2015 / 20:52

Tags