Comment optimiser ma base?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

Je viens de me faire bloquer mon compte chez OVH car ma BDD de 5Mo débordait!!
Je suis un peu énervé car je n'ai que 5 pages avec à peine une trentaine de contenus de 4 types différents...

Drupal serait donc un gouffre de ressources pour MySQL!!
Après une petite enquête, j'ai vu que certaines tables stockent tout de chez tout; notamment les tables LOCALES (locales_source et locales_target) qui à elles deux prennent 1.7Mo!!!!!
Mes tables de cache, Batch et un petit peu Session prennent aussi un peu de place!

Comment optimiser tout ça?
Je ne veux pas abandonner Drupal pour un problème de mémoire, mais il est hors de question que je paie pour ce genre de débordement!!!

Merci d'avance

J'ai une offre Start1G...

Je ne vois pas en quoi c'est ridicule pour un tout petit site qui n'a pas vocation à attirer des milliers de personnes!
C'est vrai que ce n'est pas beaucoup, mais normalement bien suffisant.

Parti comme c'est, je vais mettre les mains dans le cambouis et virer ces requêtes d'insertions à la base, ou me créer un batch qui va me faire des 'truncate' de temps en temps
Pas de meilleur idée?

Ce qui est ridicule c'est qu'un hébergeur ose limiter une base de donnée à 5mo. J'aurais compris une telle contrainte il y a 15 ans, mais aujourd'hui cela n'a juste aucun sens.

Ceci étant dit, si je n'ai pas réussi à trouver la fiche technique de l'offre en question, et pour la plus petite que j'ai trouvé, c'est 25mo pour la base de données.

En tout cas, Drupal sur 5mo, ça ne marchera jamais, ce n'est pas conçu pour cela. Ceci étant dit, les pistes pour limiter l'occupation en base :
1/ Désactiver le module database logging (et vider les tables watchdog). Activer à la place syslog (en espérant que tu ais accès aux logs du serveur).
2/ En espérant que le module php-apc soit activé, tu peux aussi installer le module cacherouter et ainsi desactiver le cache en base de données pour lui substituer un cache en mémoire via APC (là aussi, pense à vider les tables cache_).
3/ Si tu n'as pas APC, ou si tu n'as pas assez de mémoire, tu peux enfin utilise cacherouter en mode "files". Dans ce cas, ce sont des fichiers statiques sur le disque local qui seront utilisés comme cache (et là aussi vider les tables cache_
)/
4/ Vérifier que le CRON de ton serveur vide bien les sessions PHP. Tu peux aussi faire un truncate sur la table session en fonction du timestamp.

Bonjour Yoran, j'ai activé APC et installé le module Cache Router, fait les modifications dan le sttings.php, mais je ne vois rien au niveau de la Configuration du site. Est-ce normal ? Y'a-t-il une entrée dédiée à Cacherouter ?
Sais-tu si l'on peut cumuler memcache avec APC ?
Encore une petite question, désolé de t'embêter, maintenant les fonctions cache_get et cache_set vont faire appel à APC, c'est bien ça ?

APC, à l'origine, est juste là pour accélérer l'exécution du code PHP. Son principe est de stocker dans une zone mémoire les fonctions compilées pour leurs prochaines exécution. Mais comme APC gère de la mémoire, il propose aux programmes PHP d'utiliser une partie de celle-ci pour leur usage. Cacherouter configuré pour utiliser APC exploite cette option.

Memcache quant à lui ne permet _que_de fournir de la mémoire aux applications PHP (ou autre d'ailleurs). L'autre différence avec APC est qu'il le fait à travers le réseau, ainsi si tu disposes sur le réseau d'une machine disposant de beaucoup de mémoire, tu peux y installer un service memcached pour offrir ce service à d'autres machines. Cacherouter peut être aussi configuré pour utiliser memcache mais j'avoue que je lui préfère le module dédié "memcache".

Pour revenir à tes questions, oui tu peux utiliser APC et Memcache mais pas en tant que "mémoire partagée". Pour cela (et donc pour cacherouter) il faut décider entre l'un ou l'autre. Si tu optes pour Memcache, cela ne veut pas pour autant dire qu'il faille virer APC qui continue à être utile pour son métier premier, l'accélération du code PHP.

Personnellement ma configuration standard est APC+Memcache pour toutes mes installations mais je n'utilise jamais APC en cache, toujours memcache. Maintenant si toi tu as choisi uniquement APC (cache et accélération de code), les fonctions cache_get, cache_set et cache_clear_all font effectivement appel à APC. Tu dois dans ce sens avoir dans ton settings.php un $conf['cache.inc'] qui en témoigne.

Ensuite je n'ai pas suivi le développement de cacherouter (qui bugait salement avec memcache), mais à l'époque il n'y avait rien dans l'administration de Drupal, tout était dans settings.php.

Oui c'est exactement cela. Cacherouter sert juste à gérer le cache des données Drupal, APC peut être utilisé comme stockage de cache de données mais son métier premier est l'optimisation et le cache de code, il peut donc être installé et utilisé sans même que Drupal n'en soit conscient.

OVH a totalement repensé son catalogue et l'offre Start 1G n'est plus proposée aux nouveaux clients.

Ceci posé il existe des offres très peu chères sur lesquelles drupal fonctionne très bien, mais il y a un moment où il faut être cohérent : pourquoi s'offrir un autocar Pullman si c'est pour vouloir le garer sur une place de 206 ? Si le site ne "mérite pas" un hébergement convenable, "mérite"-t-il Drupal ? Tu pourras mettre en place tous les bricolages que tu voudras, Drupal ne rentrera jamais dans 5mo : dès que tu installeras d'autres modules ça débordera. Il vaut mieux disposer avant ouverture d'au moins 10-12 Mo, rien que pour les paramètres. Je ne sais pas ce que "normalement" veut dire, mais si Drupal a la puissance et la flexibilité qui font sa réputation, il ne faut pas s'attendre à ce qu'il se manipule comme une 206...

De toute façon, le problème n'est pas là!
Mon problème ne concerne pas mon offre OVH, mais bel et bien le stockage de données inutiles dans ma base.

Pour reprendre la comparaison automobile, je me suis acheté un porsche car sa carrosserie est belle, simplement, je ne peux pas l'utiliser parceque j'ai un trop petit réservoir
J'ai un autre site sous Joomla, avec la même offre, et sans aucun problème!

Je trouve simplement dommage qu'il n'existe pas une gestion plus poussée de la BDD
En tout cas, je vais fouiller les infos de Yoran!

[mode mauvaise langue on] Heureusement que Joomla consommer peu de ressources ;-)[mode mauvaise langue off]

Pour reprendre ton image, ce n'est pas le réservoir qui est trop petit. C'est plutôt que tu veux juste lui mettre le volume d'essence qui aurait suffit à une de-deuch (J'ai pas dit que Joomla était une de-deuch hein ! :-D)).

Ban, plaisanteries mises à part, as tu appliqué ce que je t'ai dit, ainsi les conseils de guillaume, dont certains se recoupent ? Car c'est là que se trouve la gestion poussée que tu recherches. Chaque fonction de Drupal est déconnectable et paramétrable.

Ceci étant dit, ce serait sans doute pas mal qu'existe une distrib de drupal spécialement pour un blog léger, un peu comme OpenAttrium pour les intra/extranets. Drupal en standard, c'est un "barebone" prévu pour du lourd.

Essaye de désactiver les modules core suivants :

  • Database logging
  • Locale (perte de la traduction de l'interface)
  • Statistics
  • Syslog

Et n'active pas le cache drupal.

Tu devrais gagner un peu de place au détriment de fonctionnalité.

Concernant ta métaphore avec la porche et le réservoir elle n'est pas bonne du tout ou du moins pas significative dans le cas actuel. L'essence de Drupal serait plutôt la mémoire et la puissance du CPU de ton serveur.

Il faut bien comparer la taille ou la puissance du véhicule avec l'espace qu'on lui donne pour évoluer...

Et soit dit en passant Drupal ne stocke pas des données inutiles :)

Hmmm, tant pis pour ma comparaison automobile...

J'avais pris Drupal pour ses qualités de CMF, histoire de coder un peu derrière ce que je voulais personnaliser, même sur un petit site! En j'en suis de plus en plus déçu (enfin là n'est pas le soucis)
C'est vrai qu'il serait utile d'avoir une version Lite!

Je vais me faire un cron, déjà, ça va faire du bien
J'ai aussi le module Captcha qui malgrè le fait que je lui ai demandé de ne pas stocker, va m'enregistrer toutes les réponses testées (merci les spams!!!)

Ben tu sais, j'en ai des tonnes de modules de ce genre. Là j'en ai une poignée sur drupal.org et j'ai déjà un mal de chien à suivre les issues, donc je suis un peu frileux à en mettre des supplémentaires.

Je signale à toutes fins utiles que Drupal fonctionne sans souci sur les offres mutualisées de FirstHeberg, dont la taille de base de données est illimitée. La première offre est à 1 euro par mois, et en plus on peut choisir une période de facturation plus courte (pour faire un test par exemple). Sinon il y a Niloo qui est en train de construire une offre payante, au même tarif...

S'agissant d'une version "légère pour faire un petit blog", j'ai une bonne nouvelle pour toi Yoran, elle existe ! :-)