J'ai trouvé un superbe article ici sur l'optimisation de WordPress pour les grandes installations.
L'une des étapes fait référence à lighthttpd
qui semble excellente mais qui n'est actuellement pas prise en charge par DirectAdmin. La dernière fois que j'ai joué avec une installation non-DA, j'ai réussi à casser mon serveur et j'ai dû payer un professionnel pour le faire réparer ...
Une de ses autres étapes consiste à ALTER
toutes mes tables MySQL pour utiliser le moteur InnoDB au lieu de MyISAM.
Cela me plaît, car il semblerait que cela résoudrait certains des les principaux problèmesque j’ai eu - c’est-à-dire des verrous de table. Voici un exemple de SHOW PROCESSLIST;
de MySQL, y compris les instructions SQL:
| 17181 | my_db | localhost | my_db | Query | 35117 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'boraras-brigittae' AND wp_po |
| 17182 | my_db | localhost | my_db | Query | 35118 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17183 | my_db | localhost | my_db | Query | 35117 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'boraras-brigittae' AND wp_po |
| 17184 | my_db | localhost | my_db | Query | 35117 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'boraras-brigittae' AND wp_po |
| 17185 | my_db | localhost | my_db | Query | 35041 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'akysis-vespa' AND wp_posts.p |
| 17186 | my_db | localhost | my_db | Query | 35050 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('images','profiledotline-gif') A |
| 17187 | my_db | localhost | my_db | Query | 35050 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('images','picarrow-gif') AND (po |
| 17188 | my_db | localhost | my_db | Query | 35043 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17189 | my_db | localhost | my_db | Query | 35041 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('m','marginal') AND (post_type = |
| 17190 | my_db | localhost | my_db | Query | 34989 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17191 | my_db | localhost | my_db | Query | 34989 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('w','wet-dry-filter') AND (post_ |
| 17192 | my_db | localhost | my_db | Query | 34990 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17193 | my_db | localhost | my_db | Query | 34954 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'corydoras-sterbai' AND wp_po |
| 17194 | my_db | localhost | my_db | Query | 34954 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17195 | my_db | localhost | my_db | Query | 34955 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17196 | my_db | localhost | my_db | Query | 34954 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17197 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17198 | my_db | localhost | my_db | Query | 34955 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17199 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17200 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17201 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums','lofiversion','index-ph |
| 17202 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17204 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17205 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'sawbwa-resplendens' AND wp_p |
| 17206 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'badis-sp-buxar' AND wp_posts |
| 17207 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'melanotaenia-boesemani' AND |
| 17208 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'betta-prima' AND wp_posts.po |
| 17209 | my_db | localhost | my_db | Query | 34865 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17210 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17211 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17213 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17214 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17215 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('knowledge-base') AND (post_type |
| 17216 | my_db | localhost | my_db | Query | 34865 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17217 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17218 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'badis-sp-buxar' AND wp_posts |
| 17219 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums','lofiversion','index-ph |
| 17220 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'betta-prima' AND wp_posts.po |
| 17221 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17222 | my_db | localhost | my_db | Query | 34865 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17223 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17224 | my_db | localhost | my_db | Query | 34865 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'hemichromis-lifalili' AND wp |
| 17225 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17226 | my_db | localhost | my_db | Query | 34862 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'apistogramma-borellii' AND w |
| 17227 | my_db | localhost | my_db | Query | 34863 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'melanotaenia-lacustris' AND |
| 17228 | my_db | localhost | my_db | Query | 34862 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'melanotaenia-lacustris' AND |
| 17229 | my_db | localhost | my_db | Query | 34861 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'mikrogeophagus-altispinosus' |
| 17230 | my_db | localhost | my_db | Query | 34861 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.ID = 25503 AND wp_posts.post_type = 'atta |
| 17231 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17232 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17233 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('knowledge-base') AND (post_type |
| 17234 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17235 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17236 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17237 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17238 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('m','migrate') AND (post_type = |
| 17239 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'hemichromis-lifalili' AND wp |
| 17240 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17241 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17242 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17243 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17244 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums','lofiversion','index-ph |
| 17245 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17246 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17247 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17248 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'geophagus-brokopondo' AND wp |
| 17249 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'hyphessobrycon-amandae' AND |
| 17253 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17255 | my_db | localhost | my_db | Query | 34786 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('knowledge-base') AND (post_type |
| 17260 | my_db | localhost | my_db | Query | 34786 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('s','silver-sand') AND (post_typ |
| 17262 | my_db | localhost | my_db | Query | 34786 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 25505 | root | localhost | NULL | Query | 2 | NULL | SHOW PROCESSLIST
J'ai activé le slow-query-log
et le résultat (ayant été exécuté à l'aide d'un script d'analyse) peut être trouvé ici .
Cependant, comme j'ai essayé de ALTER
mes tables, l'erreur suivante s'est produite le wp_posts
: ERROR 1214 (HY000) at line 14: The used table type doesn't support FULLTEXT indexes
Donc, mes questions sont un peu triples, mais en un seul:
* J'ai une myriade de plugins, y compris W3 Total Cache, Simple Forums, AdRotate et bien d'autres.
J'ai récemment joué avec une pile Ubuntu LAMP et une installation WordPress et j'ai envisagé de passer à InnoDB ou à NGINX.
Juste pour mettre en scène, j'avais le plugin Next Gen Gallery en marche et j'ai remarqué que ses tables étaient 'différentes'. J'ai donc pensé à étudier le passage à InnoDB.
Puis-je utiliser InnoDB sans nuire à mon installation WordPress?
Tout d’abord, ne changez pas pour InnoDB, cela cassera des choses d’une manière que vous ne pouvez pas imaginer. Et vous essayez d’optimiser votre site Web sans avoir à tout recommencer. Vous feriez mieux de travailler avec ce que vous avez en premier.
Si vous voulez voir ce qui se passe, configurez un site de test et utilisez une exportation de votre base de données actuelle, avec tous les mêmes plugins, etc. Elle générera une erreur de connexion à la base de données et vous devrez simplement vous rendre à SQLyog ou à Sequel Pro. et restaurer à partir d'une sauvegarde SQL.
Optimisation
J'ai configuré un site qui est mis à l'échelle sur deux bases de données 2 en utilisant des serveurs frontaux hyperDB 3, une charge équilibrée et un CDN. Il a été testé en charge à 2000 concurrents/30000 visiteurs par jour.
Tout cela est très bien géré avec W3 Total Cache, un serveur MemCached, Hyper DB et CDN. J'utilise le profil mysql par défaut pour un site Web de taille moyenne.
Dans mon cas, j'ai de la chance, le contenu ne change que toutes les semaines pour que je puisse tout mettre en cache.
Connexions Apache MaxLes profils par défaut pour Apache autoriseront un maximum de 150 clients et 1000 requêtes maximum. Ainsi, si vous avez 150 visiteurs, vous pouvez avoir 150 000 requêtes sur votre serveur.
Définissez ce paramètre sur 5 ou 15 clients maximum pour commencer par augmenter le nombre maximal de demandes à 2000 (ce qui signifie avant qu'Apache ne génère un nouveau processus).
Définissez les fils de réserve sur 1 ou 2 - Il s'agit d'une réservation de mémoire qu'Apache conserve en réserve.
Définissez le délai d'attente Keep Alive sur 15, ce qui signifie 15 secondes. Ainsi, si la même demande parvient à Apache, aucun nouveau thread n'est démarré.
voir http://www.devside.net/articles/Apache-performance-tuning
Mémoire insuffisante - Apache/database/timeout
Ce que j’ai appris sur les tables verrouillées, c’est que les sessions de base de données restent trop longtemps actives, ce qui entraîne un manque de mémoire. De l'expérience douloureuse. c'est un combo un/deux - vous pensez que vous avez besoin de davantage de connexions de base de données, vous les augmentez donc et l'effet de frappe manque de mémoire sur la base de données.
Vous n'avez pas dit pourquoi vous ne pouvez pas en mettre plus en cache et réduire le nombre de demandes de base de données? Le serveur de base de données se trouve également sur un boîtier différent d’Apache - cela fait une grande différence.
mqsql.cnf
ce sera vide par défaut ... faites un scan sous je pense usr/share/doc/mysql-serveur-5.0/examples/my-medium.cnf.gz
Je sais que j'ai commencé avec my-small.cnf et qu'après avoir séparé la base de données d'Apache, tout s'est stabilisé
Alternative PHP Cache (APC)
En référence à vos 5 étapes d’optimisation essentielles http://www.619cloud.com/blog/5-essential-steps-for-hosting-wordpress/
Vous constaterez probablement qu'APC n'est pas en cours d'exécution sur votre serveur. Qu'est-ce que W3 Total Cache vous dit lorsque vous accédez à WordPress> Performance> Général et que vous cliquez sur Contrôle de compatibilité - quels sont les résultats?
Enfin ... c'est ce que le site que j'ai installé est identique aussi ...
http://www.rackspace.com/blog/deploying-scalable-wordpress/
Il y a beaucoup d'informations ici sur le passage à InnoDB
https://wordpress.stackexchange.com/search?q=innodb
Il y a un certain nombre de choses à considérer:
Cependant, il semble que vous ayez des problèmes plus fondamentaux à résoudre avant de vous inquiéter de passer à InnoDB.
EXPLAIN
pour comprendre ce qui se passe - vous devrez peut-être simplement optimiser les tables ou ajouter des index supplémentaires - il est fort probable que certains de vos plugins exécutent des requêtes qui forcent des recherches séquentielles sur votre base de données. Recherchez et ajoutez des index pour les accélérer, si tel est le cas.En bref, vous n’avez pas l’impression que vous avez vraiment trouvé les causes profondes du problème. Tant que vous ne maîtriserez pas mieux cela, tout ce que vous ferez deviendra un peu aléatoire.