Comment accélérer Drupal 7 avec la DB distante (pas la résolution DNS)

Nous avons Drupal 7 sur la machine virtuelle Ubuntu LTS (VMWare) avec le server MySQL 5.1 sur le même server physique, mais sur une machine virtuelle différente.

Le site Web de Drupal est en cours de développement, donc il n'y a pratiquement pas de trafic, même si l'access de ping et shell est rapide, le site Drupal fonctionne très lentement (> 5 secondes pour charger n'importe quelle page). Après la search ici et ailleurs, je comprends que le problème réside dans le fait que SQL est accessible via une interface réseau, ce qui, de toute évidence, Drupal fait vraiment mal.

J'ai vérifié la résolution DNS et il ne devrait y en avoir aucun côté Drupal (l'hôte db est donné par ip, il y a une input dns dans le file / etc / hosts) ni du côté MySQL (ignorer-nom-résoudre est activé, le client Drupal est access accordé par adresse IP).

Le Drupal devel querylog dit:

Exécute 336 requêtes en 5993.89 ms. Les requêtes de plus de 5 ms sont en surbrillance. Le time d'exécution de la page était de 7015,35 ms. Mémoire utilisée à: devel_boot () = 5.53 Mo, devel_shutdown () = 93.35 Mo, PHP peak = 94 Mo.

La chose étrange est que pour une seule page, environ 2/3 des requêtes sont rapides, d'autres sont extrêmement lents:

1.765 DrupalDatabaseCache::getMultipleP AE SELECT cid, data, created, expire, serialized FROM cache_bootstrap WHERE cid IN (:cids_0) default 575.825 DrupalDatabaseCache::getMultipleP AE SELECT cid, data, created, expire, serialized FROM cache_bootstrap WHERE cid IN (:cids_0) default 13.585 DrupalDatabaseCache::getMultipleP AE SELECT cid, data, created, expire, serialized FROM cache_bootstrap WHERE cid IN (:cids_0) default 466.9914 DrupalDatabaseCache::getMultipleP AE SELECT cid, data, created, expire, serialized FROM cache WHERE cid IN (:cids_0) default 1.841 drupal_lookup_pathP AE SELECT source FROM url_alias WHERE alias = :alias AND language IN (:language, :language_none) ORDER BY language ASC, pid DESC default 

La situation est corrigée pour l'access anon en permettant le cache Drupal. L'set de l'interface d'administration, cependant, est toujours aussi lent.

C'est la politique actuelle de l'entreprise d'avoir un server DB séparément. Peut-il y avoir d'autres options pour accélérer Drupal?

La configuration de la database par défaut indique le pilote 'mysql', peut-être que je devrais le changer en 'mysqli' ou 'pdo_mysql'? Si je le change à mysqli, cependant, la database se plaint que le pilote concerné n'existe pas – quoi que ce soit pour installer là spécifiquement pour Drupal, car mysqli & pdo sont tous deux activés en PHP.

Je pense qu'il existe deux domaines dans lesquels vous pouvez optimiser votre site:

  1. Réduisez les requêtes individuelles en accordant votre database MySQL. Je commencerais avec mysqltuner.pl , ce qui vous montrera des problèmes évidents avec votre installation et fournira des conseils d'accord.
  2. Réduisez le nombre de requêtes. Je connais une grande installation de Drupal où cela a été fait en utilisant memcache sur l'hôte du server Web.

Avez-vous vérifié la gestion des performances du site chez drupal.org?

J'ai eu le même problème et j'ai utilisé Google Chrome PageSpeed ​​et YSlow pour découvrir mes problèmes.

Fondamentalement, je faisais ces étapes ci-dessous:

Essayez d'installer PHP APC , définissez la taille de l'APC shm à 256Mb (il y a beaucoup de guide pour cela). Ensuite, assurez-vous que KeepAlive est activé pour Apache, et activez également la compression Apache (via Apache mod_deflate).

Il y a plusieurs choses que vous pouvez faire:

  • Tweak performance de mysqld avec /etc/my.cnf :
    • majeur / MySQLTuner-perl · GitHub
    • MySQL Tuning Primer Script dans Launchpad
  • Activer la caching:
    • PECL :: Package :: APC
    • memcached – un système de caching des objects à memory dissortingbuée
    • Communauté de vernis | Vernis rend les sites Web volés!

Essayez d'explorer aussi:

  • Groupes Drupal | Rencontrez, discutez, planifiez, et travaillez sur Drupal et Drupalcamps
  • Réponses Drupal
    • Haute performance | Groupes Drupal