Pergunta no Product Feed PRO para WooCommerce do WordPress: Cron para de funcionar quando a vida acaba

Um usuário perguntou ?

Olá,

Instalei o plugin e funcionou bem por alguns dias. Agora percebo que ele não foi atualizado por vários dias e estou recebendo um erro que não encontrei antes no New Relic, que está relacionado a um “falha ao enviar pacote QUERY”.

Outro problema que descobri é que alguns crons (por exemplo cancelando pedidos não pagos) param de funcionar aleatoriamente, quando esse erro também ocorre.

Eu tenho 45.000 produtos e 16 GB de RAM do servidor, então não acho que seja esse o problema. PHP 7.3, 6 núcleos, e de acordo com a New Relic, resposta de 500ms, então não há muito tráfego envolvido. Eu tenho um limite de execução PHP de 1200 segundos e um limite de memória PHP de 4096 MB.

Agradeço sua ajuda para resolver isso, obrigado.

Santiago

(@evavangelooven)

1 ano, 5 meses atrás

Olá svaldesm,

Obrigado por nos contatar.

Existem muitos 45.000 produtos, especialmente se esses 45.000 tiverem variáveis ​​que também tenham variantes. O que estávamos vendo anteriormente não é o erro “falha ao enviar o pacote QUERY” para qualquer outro usuário, então fizemos algumas pesquisas on-line e eles sugerem que há um problema de recurso (memória, tempo limite, etc.) no futuro. O estranho é que você mencionou que está funcionando bem há pelo menos alguns dias, então o que mudou nos últimos dias que pode ter causado isso de repente? Você instalou outros plugins com muitos recursos ou fez alterações nas configurações do feed?

Melhor véspera

lançador de tópicos

(@svaldesm)

1 ano, 5 meses atrás

Olá Eva, obrigado pela sua rápida resposta.

Quantos produtos este plugin pode suportar? Não temos nenhuma alteração, apenas os produtos (e provavelmente serão filtrados por “em estoque”, caso em que mostrará apenas 26.000).

Não mudamos nada além disso. Mais clientes estão usando seu plugin para tantos produtos? Isso é feito para escalabilidade?

Em relação ao erro, estamos depurando mais, mas parece estar relacionado ao plugin.

Obrigado

lançador de tópicos

(@svaldesm)

1 ano, 5 meses atrás

Executamos o cron manualmente e não há nada de errado com isso. O fluxo de trabalho é o mesmo se você extrair manualmente em vez de automaticamente do cron?

Vejo que o próprio cron não está agendado para uma atualização novamente. Liguei/desliguei o plugin, liguei/desliguei a energia, configurações e nada salva.

Outra coisa estranha é que na página de configurações do plugin diz que WP-Cron está desabilitado, mas eu sei que está habilitado no WP-Config e outros programas cron estão sendo executados.

Alguma dúvida conhecida com isso também?

Obrigado

Santiago

Esta resposta foi modificada há 1 ano e 5 meses.

(@evavangelooven)

1 ano, 5 meses atrás

Olá svaldesm,

O plugin é projetado para que possa lidar com um grande número de produtos. Por isso, por exemplo, ele processava os produtos em pequenos lotes. Toda vez que um lote termina de processar um novo evento cron, o próximo lote é criado 2 segundos depois. Isso tudo funciona bem quando o WP-cron está ativado, mas cria problemas ao executar o WP-cron do seu cron unix porque os eventos cron ficam inativos até que seu cron unix seja executado novamente.

Para fins de argumentação, suponha que seu cron Unix seja executado a cada 5 minutos e você esteja executando uma versão PHP de 7 ou superior:

45.000 / 750 (tamanho do lote no seu caso) = 60 lotes necessários. Na melhor das hipóteses, já custaria 300 minutos apenas para fazer todos os lotes, mas como o produto precisa ser alimentado, isso pode facilmente passar de 450 a 600 minutos antes que a ração seja processada. É por isso que, enquanto funciona, desaconselho a desativação do WP-cron no wp-config.

Alguns de nossos usuários têm mais de 100.000 produtos e o WP-cron está habilitado. Funciona para eles. No entanto, isso só funciona quando você tem um hardware de servidor sério.

Melhor véspera

(@evavangelooven)

1 ano, 5 meses atrás

Olá,

Supondo que o problema seja resolvido e nosso suporte não seja mais necessário, agora fecharei este tópico por motivos internos.

Sinta-se à vontade para nos contatar novamente sempre que precisar de nossa ajuda ou se tiver alguma dúvida.

Bom final de semana Eva

lançador de tópicos

(@svaldesm)

1 ano, 5 meses atrás

Olá Eva

Obrigado pela sua resposta. Aqui estão dois tópicos que gostaria de discutir:

1. Usando o Cron Server em vez do WP-Cron – Fomos aconselhados muitas vezes a usar o cron server para obter alguns benefícios em termos de desempenho do servidor. Se o tempo do servidor for ajustado em 1 ou 2 minutos, digamos, ainda funcionará? Você poderia explicar como o plug-in de lote funciona?

2. O plugin quebra algumas funcionalidades do crons e não atualiza: quando atualizamos manualmente o plugin, ele funciona. Mas as atualizações agendadas não funcionam (o Redis não funciona neste servidor). Na verdade, a pior parte é que outras agendas cron sofrem por causa disso, provavelmente porque algo acontece com essa tarefa. Por exemplo, woocommerce_cancel_unpaid_orders só é agendado após a última execução. Ele é executado ao mesmo tempo em que o feed precisa ser atualizado, algo acontece e não funciona mais. Desativamos o aditivo alimentar e parece funcionar. Este é um servidor de 16 GB com tráfego regular, roda muito rápido, então não está relacionado ao hardware. Talvez esteja quebrando um problema de configuração, mas agora não há muito nos logs. Alguma pista sobre isso?

Muito obrigado!

(@evavangelooven)

1 ano, 5 meses atrás

Olá svaldesm,

O plug-in processa produtos em lotes porque quando processa todos os produtos de uma vez e tenta gravá-los em todos os feeds de uma só vez, a maioria dos servidores fica sem memória ou o limite de ama é definido.

Os tamanhos de lote de produto padrão são os seguintes:

PHP versão 7 e o número de produtos em seu site é inferior a 50.000 = 750 produtos ao mesmo tempo PHP versão > 7 e o número de produtos em seu site é superior a 50.000 = 2.500 produtos ao mesmo tempo

Ao criar ou renovar o feed manualmente, processe o primeiro lote. Quando um lote não é suficiente para processar todos os produtos, o plugin corrige um evento cron após a conclusão do lote para registrar o próximo lote de produtos. E assim sucessivamente até que todos os produtos tenham sido processados.

Esse evento cron é acionado alguns segundos após a conclusão de um lote anterior. Agora, quando você aciona eventos cron com um cron externo, o evento permanece inativo até ser acionado. Então, mas com o recurso WP-cron, há apenas alguns segundos entre cada lote, no seu caso depende do intervalo que você definiu para o cron externo.

Espero que isto faça sentido?

Melhor véspera

lançador de tópicos

(@svaldesm)

1 ano, 5 meses atrás

Olá Eva

Faz sentido e o ponto 1 é claro para mim.

O que não estou muito claro é o ponto 2. Como escrevi acima, quando o plugin é executado “automaticamente”, ele interrompe outras tarefas cron de alguma forma. Está incomodando você com o uso de RAM ou algo com a configuração do servidor? Porque o feed não está atualizado. Lembre-se de que esta é uma máquina muito grande e lida muito bem com muito tráfego, portanto, não é um problema de hardware (mas talvez um problema de configuração).

Como podemos refinar ainda mais isso? Existem configurações conhecidas (memória php, RAM, etc.) que fazem com que o plugin “trava” durante a atualização automática? De alguma forma, isso contradiz outra coisa. WP-Cron e Redis também são habilitados neste servidor e a fonte é atualizada quando feita manualmente.

Obrigado pela ajuda,

(@evavangelooven)

1 ano, 5 meses atrás

Olá svaldesm,

Em relação ao ponto dois: não informamos a nenhum outro usuário que nosso plugin quebra outras tarefas cron, então acho que você tem o direito de assumir que está em conflito com outra coisa, talvez um plugin como o Redis b’.

Passamos muito tempo no passado tentando tornar nosso plugin compatível com o cache de objetos Redis, mas isso causou um comportamento tão inesperado que decidimos desistir dele. Você tentou executar nosso plugin com o Redis desativado e, em caso afirmativo, o problema persistiu?

melhor véspera

lançador de tópicos

(@svaldesm)

1 ano, 5 meses atrás

Olá Eva

Erro meu, escrevi errado. O Redis está desativado neste site.

Portanto, não tenho certeza de como depurar o comportamento do plug-in e por que ele quebra. Uma bandeira amarela (possivelmente) é que o WP-Cron está desabilitado de acordo com as configurações do plugin. Não sei por que isso acontece, pois podemos ver Cron Events com WP Crontrol (caso contrário, seria impossível se o plugin estivesse desabilitado).

Se você conhece maneiras de depurar ou o que procurar nos logs, isso seria muito útil (há logs no plugin?)

Muito Obrigado,

(@evavangelooven)

1 ano, 5 meses atrás

Olá svaldesm,

Você poderia tentar desabilitar e reativar nosso plugin? Ele deve redefinir o evento cron que redefine as atualizações automáticas. Isso deve diminuir a mensagem de que o WP-cron está desabilitado.

Quando nosso plugin cria erros ou avisos, eles podem ser encontrados no WordPress debug.log (no diretório wp-content).

melhor véspera

lançador de tópicos

(@svaldesm)

1 ano, 5 meses atrás

Olá Eva

Na verdade, ele reprogramou as coroas. Vou esperar alguns dias para o feed não atualizar para ver se é o feed ou outra coisa que quebra o cron Cancel_unpaid_orders. Caso algo mais o quebre, vou ativar as atualizações automáticas de feed novamente e ver se essa é a causa do problema.

Obrigado por sua ajuda e vou mantê-lo informado para mais diagnósticos.

lançador de tópicos

(@svaldesm)

1 ano, 5 meses atrás

Olá Eva

Após ligar/desligar o plugue, as coroas atuaram novamente. Mas quando era esperado que o feed fosse atualizado, isso nunca aconteceu e agora as coroas do plugin desapareceram. Alguma ideia de como depurar isso? O WP-Cron está ativo, o Redis está inativo, temos muitos visitantes, então o Cron está funcionando o tempo todo.

Obrigado,

(@evavangelooven)

1 ano, 5 meses atrás

Olá svaldesm,

você poderia entrar em contato com [email protected]? Nós cuidaremos disso a partir de agora.

Melhor véspera

Isto foi útil?

0 / 0

Deixe uma resposta 0

O seu endereço de email não será publicado. Campos obrigatórios são marcados *