Fork me on GitHub






Requête Mysql module News
Aspirant
Inscrit: 24/01/2008 11:33
Messages: 44
Nous avons une base de 15000 articles pour un trafic de 5000 à 6000 visiteurs uniques environ par jour. Le site est hébergé sur un VDS medium de PHPNet. Et aux heures de pointe le site rame. Le cache est activé à peu prés partout. Coté base de données, j'ai activé la trace des "slow-log". Celle qui revient tout le temps est la suivante (extrait de la log de Mysql) :

# Query_time: 9  Lock_time: 0  Rows_sent: 14275  Rows_examined: 43240 
SELECT s.*, t.* FROM xb2460_stories sxb2460_topics t 
WHERE 
(s.published AND s.published <= 1226610608) AND
 (
s.expired OR s.expired 1226610608) AND
 (
s.topicid=t.topic_id)  AND s.topicid IN 
(325,408,429,143,454,470,453,106,451,443,434,425,458,423,
422,421,420,231,474,158,479,80,468,364,82,415,262,377,445,
281,128,428,427,225,170,111,9,441,94,46,287,265,284,193,
249,303,142,288,189,268,113,174,465,245,118,159,149,91,
462,398,322,216,187,203,153,192,333,309,274,112,246,220,
280,254,210,298,411,290,300,344,119,320,157,54,321,319,
282,259,234,230,229,211,156,121,227,215,166,286,266,345,
77,242,372,253,299,324,329,257,407,406,173,302,370,403,
341,72,338,400,267,264,263,256,222,110,176,351,105,394,
223,183,182,409,178,81,217,212,209,221,397,413,163,431,
430,416,362,359,237,301,342,226,206,205,477,419,418,122,
34,107,480,293,184,378,218,271,208,41,414,5,357,117,314,
124,214,294,473,291,285,87,240,136,132,169,452) AND 
s.ihome=0 ORDER BY s.published DESC;


14275 enreg retournés, vous voyez le nombre de catégorie. Je n'ai pas encore trouvé où mais je suppose que c'est l'affichage de la page d'index du module news qui génère cette requête.

Comment peut-on optimiser cette requête et/ou changer le comportement de l'index du module pour faire une plus petite requête ?

Merci pour votre aide car sans solution à cela, nous serons probablement obligé de mettre la clef sous la porte...

Posté le : 13/11/2008 23:43
Partager Twitter Partagez cette article sur GG+
Re: Requête Mysql module News
Supporter Xoops
Inscrit: 09/01/2005 13:37
De Breizh
Messages: 16972
Bonjour,

as-tu contacté le concepteur de ce module (instant-zero) pour plus d'informations ou solutions

@++

Posté le : 14/11/2008 00:29

La connaissance s'accroît quand on la partage ...
Partager Twitter Partagez cette article sur GG+
Re: Requête Mysql module News
Xoops accro
Inscrit: 18/01/2004 17:13
De Ma Caverne
Messages: 2839
sur quelle version de news tournes tu?

Posté le : 14/11/2008 09:04

Trio de choc : FrXoops, FreeboxHD et OVH
MdxProd.com : des liens xoops indispensables
Partager Twitter Partagez cette article sur GG+
Re: Requête Mysql module News
Semi pro
Inscrit: 21/11/2004 17:40
De Un petit coin de Belgique
Messages: 826
Bonjour,
Je me permet juste d'ajouter un petit commentaire sur des potentielles lenteurs de gros sites.

Non seulement le SQL peut en être une source, mais aussi le fait de mettre des modules et des blocs en cache, car si le serveur oueb tourne sous Windows par exemple, il se peut que le répertoire /cache contienne plus de 3000 Fichiers, et tout le monde sait que Windows pédale grave dès qu'il y a trop de fichiers dans un répertoire, idem pour certaines version de linux suivant le File System.

C'est à mon avis aussi une piste de réflexion pour les prochaines versions de xoops de créer des sous répertoires pour répartir le nombre de fichiers.

Posté le : 14/11/2008 09:52
Partager Twitter Partagez cette article sur GG+
Re: Requête Mysql module News
Aspirant
Inscrit: 24/01/2008 11:33
Messages: 44
Non je n'ai pas contacté Instant Zero. Je vais le faire
Le module News est en 1.56

Il y a 239 fichiers dans le répertoire cache et 81 fichiers dans template_c. Devrait-il y en avoir plus ? nous avons 15000 articles, il devrait y avoir autant de fichiers que d'articles ?

Au passage, SPIP avec lequel je travaille gère les fichiers de son cache dans des sous répertoires. Ca me semble en effet indispensable.

le serveur hébergeant le site est sous Debian 4 etch. Le système de fichier indiqué par mount est ufs (c'est un serveur virtuel de PHPNet).

Posté le : 14/11/2008 11:23
Partager Twitter Partagez cette article sur GG+
Re: Requête Mysql module News
Aspirant
Inscrit: 24/01/2008 11:33
Messages: 44
je reviens vers vous var je n'ai pas eu de réponse de la part d'Instant Zero. Il ne lisent peut-être pas leur mail...

Bon toujours est-il que j'ai continué de chercher et localisé le bout de code qui fait la requête. Elle est dans class/class.newsstory.php et la fonction est : getAllPublished

J'ai tenté de modifier une ligne comme suit pour limiter le nombre d'enreg retourné. Actuellement plus de 14000.

$sql .= " ORDER BY s.$order DESC LIMIT 0 , 60";


Et limiter l'affichage au 60 premières news lorsque l'on affiche la page d'index du module news. L'entête du site, les colonnes latérales s'affichent correctement mais la partie devant afficher les articles reste vide et je ne comprend pas pourquoi. Si j'affiche la requête et que je l'exécute dans phpmyadmin elle me retourne bien les 60 derniers articles.

Je ne vois pas quel bug j'ai pu introduire en modifiant juste cette ligne. Ou alors il y a autre chose dans un template, mais là je ne maitrise pas assez.

A votre bon coeur, si quelqu'un veut bien m'aider. Je me sens bien seul

Posté le : 21/11/2008 17:36
Partager Twitter Partagez cette article sur GG+
Re: Requête Mysql module News
Xoops accro
Inscrit: 20/02/2008 20:27
De Belgium
Messages: 2708
Essayez avec:
$sql .= " ORDER BY s.$order DESC";
$result $db->queryF($sql,intval($limit),intval($start));

Posté le : 13/03/2009 01:53

Salutations, Gerard.
PS: Excusez mon mauvais français.
De la bonne manière de poser les questions
Partager Twitter Partagez cette article sur GG+
Re: Requête Mysql module News
Aspirant
Inscrit: 24/01/2008 11:33
Messages: 44
Bonjour,

merci, mais j'ai essayé et cela pose un autre problème, le nombre d'article affiché dans la catégorie est égale à la valeur de $limit au lieu de celle spécifiée. Je ne sais pas si c'est vraiment là que se situe le problème...

Posté le : 15/03/2009 22:12
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

56 Personne(s) en ligne (45 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 56 | Plus ...