Como evito o erro "falta de memória"?

7

Atualmente, estou trabalhando com o Drupal 7 e tenho os seguintes módulos instalados, todos atualizados para a respectiva última versão:

  • Visualizações - 7.x-3.0-beta3
  • CTools - 7.x-1.0-alpha4
  • Painéis - 7.x-3.0-alpha3
  • Regras, ACL, Fórum avançado, Acesso ao fórum, Pontos de usuário, BUEditor

Eu continuo recebendo "Erro fatal do PHP: falta de memória". O limite do meu servidor é o máximo permitido pelo meu provedor (32 MB). Esses erros aparecem principalmente ao interagir com a página de módulos, mas também para qualquer usuário que tenta renovar sua senha ou editar nós.

Assim, você teria algum conselho sobre como diminuir o uso de memória?

PS: Percebi que a maioria desses erros inclui visualizações e visualizações de arquivos .inc de plugins. Mas também diz respeito aos arquivos .inc dos módulos e do sistema principais ... Eu poderia copiar alguns deles, se você quiser.

nyoz
fonte

Respostas:

6

Realmente não há muito que você possa fazer neste caso. O Drupal 7 requer um pouco de memória, assim como Views, Panels, etc.

Se a atualização para um plano de hospedagem em que você tenha pelo menos 128 MB não for uma opção, eu asseguraria que os seguintes módulos sejam mantidos desativados:

  • Gerente de atualização
  • Log de banco de dados
  • UI do campo
  • UI de visualizações
  • Editor de painéis no local
  • Qualquer outro módulo "UI"

Faça seu desenvolvimento localmente e use o controle de versão e os recursos para atualizar sua caixa de produção.

Alex Weber
fonte
2
Observe que a interface do usuário do Views é necessária apenas ao editar uma exibição existente ou ao adicionar uma nova exibição; para o uso normal, a interface do usuário do Views não é necessária e o Views funcionará normalmente mesmo quando esse módulo estiver desativado.
Kiamlaluno
11
exatamente, o mesmo vale para qualquer um dos outros módulos "UI". Eles são necessários apenas para o desenvolvimento. Campos funcionará sem a interface do usuário, de modo Contexto vontade, etc ..
Alex Weber
4
No entanto, as próprias visualizações (não a interface do usuário) atualmente têm uma enorme pegada. Eu estive trabalhando na tentativa de combater a pegada de memória do Drupal recentemente e as visualizações observadas carregam o cache do esquema e seu próprio cache de dados em todas as páginas que exibem uma exibição. Isso pode significar facilmente vários megabytes em um site com alguns módulos instalados (cerca de 4 MB na minha instalação de teste).
Berdir 28/05
Eu tenho que discordar da sua recomendação de usar recursos - esse módulo é um enorme problema de memória. Você seria muito melhor usando ganchos de atualização para implantar alterações na configuração.
Felix Eve
Curiosamente, depois de configurar um site D7 existente em hospedagem compartilhada e deparar com muitos problemas de memória usando modos de exibição, descobri que alterar a versão do PHP de 7 para 5,6 ajudou bastante. Não tinha certeza da causa, mas cheguei ao ponto de permitir 1024M de memória e ele ainda estava acabando enquanto exibia 16 itens em uma exibição.
jammypeach
4

Conforme listado nos Requisitos do sistema do Drupal, o próprio Drupal Core precisa de 32M para funcionar. Adicionar qualquer módulo contribuído sem aumentar a memória é uma maneira infalível de encontrar esse erro.

Se o máximo do seu servidor for de apenas 32 milhões, é hora de obter uma nova hospedagem.

tim.plunkett
fonte
O ruim é que eu mudei ... acho que estou preso há pelo menos um ano ... Tenho que verificar isso. :(
nyoz
Entre, meu hoster é 1 & 1 França. Eu li em alguns fóruns de suporte do wordpress que eles recentemente atualizaram seu limite de php para 90Mb. Vou ligar na segunda-feira ...! ;)
nyoz
2

Como mencionado, o resultado final é que você realmente precisa de 128M. Outro ponto de observação é que, se o conjunto de imagens está funcionando, isso frequentemente nos lembra (pelo menos no Drupal 6) que pelo menos 96 milhões são necessários em determinadas circunstâncias.

32M simplesmente não vai cortá-lo.

NikLP
fonte
0

Eu acho que usar o módulo Views é o seu maior problema.

Reescreva todas as páginas que usam visões com consultas personalizadas, remova o módulo de visões e, enquanto estamos sobre isso, remova as Regras (novamente, mova toda a lógica para o código) e seu uso de memória será reduzido.

Além disso, apenas a gravação de arquivos de modelo e o uso de ganchos de pré-processamento removerão a necessidade de painéis economizando ainda mais memória.

Essas não são etapas fáceis ou rápidas a serem tomadas e exigem um conhecimento íntimo de Drupal, MySql e PHP; no entanto, se o desempenho for a prioridade número um, essa é a melhor solução (e será executada em 32 milhões de memória).

Felix Eve
fonte