
Forum de support de ClanFree.net
Vous n'êtes pas identifié.
Bonsoir,
Kistrof
team-als.clanfree.net
Nuked Klan installé et légèrement retouché (principalement supprimé la fonction de stats)
Donc voilà, depuis le changement de serveur SQL, j'ai modifié le fichier de config de Nuked Klan et il se trouve que le site est hyper lent, et pas que pour moi, tous les membres du site le disent !
Est-ce juste mon site ou tout le monde ?
Si c'est mon site, je voudrais bien quelques petites infos sur ce qui ne va pas !
Je précise que j'ai retouché Nuked Klan en plusieurs endroits :
- supprimé la fonction de statistiques (mis en commentaire)
- fermé la connexion SQL à la fin du script PHP (étonné que ça n'était pas fait d'ailleurs)
- modifié le bloc des membres (les non validés apparaissent en derniers inscrits)
- créé plusieurs modules : Geo, Ladder, TSViewer, Video, VideoLive (ces modules font tous un peu appel à la base de données et je peux vous détailler leur fonctionnement)
Hors ligne
Hum, apres rapide analyse, je vois que ta page fait plein plein d'appel a d'autres site. Regarde ta barre de statut quand tu charge ton site, tu verras par toi meme. C'est ça qui cause le ralentissement.
Autrement, tu peux tester en créer un autre nuked klan dans un répertoire annexe voir si c'est aussi lent. Si ce n'est pas le cas, c'est ton site en lui meme qui a un pb et ça, je n'y peux rien, c'est ton site
.
Hors ligne
Ben le soucis, c'est que ça a l'air de ramer avant le chargement, le passage habituellement rapide sur "En attente de team-als.clanfree.net ..." est parfaitement visible et dure plusieurs secondes, et la barre est vide à ce moment là !
Quand elle se remplit, je trouve sa vitesse normale, c'est le temps de réponse qui a l'air plus lent ... Nuked Klan boulotterait-il trop de ressources ??
Pour les appels à d'autres sites, c'est justement fait exprès pour utilise le moins possible le serveur !
Les vidéos à gauche et en news sont sur youtube ou dailymotion (ou trucs de ce genre) et le TSViewer est une iframe.
Je vais tester d'installer un Nuked Klan vide dans un sous répertoire et voir ce que ça donne ... mais demain :p
Hors ligne
Pour ma part, je trouve justement que c'est plus rapide qu'avant
par ailleurs, le fait d'utiliser des modules qui appellent d'autres sites t'en rend tributaire, et ça rallonge les temps d'exécution (car faire une requête à un site externe prend un certain temps, et quand on cumule le tout...)

Hors ligne
Mais il me semble que dans les cas d'inclusions d'iframes et animations flash hébergées ailleurs, c'est le navigateur client qui les chargera ... mais j'essaye d'alléger le site alors que le leader de la team veut toujours en rajouter xD
Hors ligne
Oui, mais le truc c'est que tu vas devoir aller les chercher, les infos qui sont affiché sur ton écran, tu comme dit DL, tu es tributaire de ça.
Maintenant, faut voir si le cache est géré correctement, car tu as un gros flash chargé (normalemet mis en cache par le navigateur).
Faudrait trouver un analyseur de page comme ça, je sais pas si ça existe, mais ce serait génial
.
Enfin, je trouve aussi que c'est accéléré globalement depuis le passage sur 2 serveurs, ne serait-ce que le site de Clanfree.
Hors ligne
L'animation flash en entête, c'est le premier truc que je veux virer : ça finit par faire ramer mon pc !!
Je voulais mettre un gif animé tout simple mais je crois que je vais rien animer du tout tellement ça me saoule !!
Hors ligne
Animation flash virée, aucune amélioration à l'horizon 
J'ai remis en état le site sur une page perso Free.fr (avec vieille bdd) ça marche nickel !!
Au fait, dans "infos sur votre hébergement" dans mon compte, la bande passante du mois est calculée sur les 30 derniers jours ou à partir du 1er du mois ?
Parce que je suis déjà à plus de 600 visiteurs et plus de 850 Mo de bande passante !
Hors ligne
Hors ligne
J'avoue que je ne sais pas trop quoi te dire Kistrof. De mon côté, mon site n'a pas l'air de souffrir du changement de serveur.
Clanfree lui même a l'air plus rapide.
Maintenant, ça dépend? Ton site fait-il énormément de connexions à la bdd en une seule page? Dans la mesure où mysql est désormais distant d'apache, il y a probablement un tout petit délai en plus maintenant (mais qui normalement, devrait être négligeable non? ... mais je dis ptet nimp remarquez! et il y a ptet un système de cache, ou je n'sais pas quoi, allez savoir)
Mais si tu fais énormément de connexions/accès à la base en une seule page, il y a ptet un cumul des délais ce qui rend l'attente plus importante.
Ça charge vraiment longtemps ou bien?
Y a-t-il d'autres personnes qui ont eu à souffrir de la migration en terme de performances?

Hors ligne
Ben allez faire un ptit tour sur mon site pour me donner votre avis ...
http://team-als.clanfree.net/index.php
C'est vrai que pour avoir pas mal fouillé le code de nuked klan, j'ai vu qu'il fait beaucoup de requètes sql. J'ai remarqué qu'il ne fermait carrément pas la connexion sql ouverte par mysql_connect !! (et donc je l'ai mise dans les variables globales et fermée à la fin du script)
Je viens de voir à l'instant que PMA rame aussi 
Je commence à penser que le problème est lié à mysql ... mais quoi ?
Hors ligne
Le délai est quasiment négligeable, c'est de l'ordre de 5ms...
Je viens de regarder pma, sur un site annexe que j'ai fait, je n'ai aucun problème de lenteur.
Franchement, je n'ai aucune idée.
Hors ligne
Il y a peut-être un problème avec mon compte sur le serveur mysql, je vais faire une sauvegarde de la bdd, la vider totalement, et restaurer la sauvegarde ... on verra bien
Edit: pas constaté d'amélioration après re-remplissage de la bdd ...
Le temps minimum que j'ai eu pour obtenir une page a été de 5 secondes (chrono en main)
Dernière modification par Kistrof (09-04-2008 18:39:15)
Hors ligne
Ici la hotline du Dernier Recours, bonsoiiiiir.
Effectivement, le site est lent. Ça coince très clairement au niveau de l'exécution PHP :
defraagh@ns29562:~$ time php-cgi /home/team-als/index.php >> /dev/null real 0m7.168s user 0m0.175s sys 0m0.075s
Pour référence, sur un NK vanilla :
defraagh@ns29562:~$ time php-cgi /home/42/nk/index.php >> /dev/null real 0m0.233s user 0m0.030s sys 0m0.018s
Oui, un facteur 35, ah quand même. Et au niveau du temps d'affichage perçu, le JavaScript en folie et les animations Flash n'améliorent rien.
Le facteur pénalisant semble être le code "modifié", donc. Essaye de voir si la suppression de tes modules maison et/ou de ta modification de la fonction du bloc des membres entre en jeu.
Pour la meilleure performance chez Free, tout dépend du cluster d'exécution où tu tombes. Il n'y a pas de puissance garantie chez eux mais une puissance processeur potentiellement 1000 fois plus importante qu'ici à un moment donné. (et potentiellement 1000 fois moindre, oui).
Sinon, je tiens à dire que l'Alsace vaincra.
Bonne soirée les petiots !
Hors ligne
Merci defraagh !
J'ai dégagé l'animation flash en haut du site, mais les autres (les vidéos principalement) sont hébergées ailleurs, elles ne font aucun appel à php, c'est du html tout simple et le navigateur se débrouille ensuite.
Bon, je vais enlever mes quelques modifications php et voir ce que ça donne
Dernière modification par Kistrof (09-04-2008 23:16:15)
Hors ligne
J'ai enlevé la fermeture de la connexion sql, supprimé 2 requetes sql inutilisées (woops), supprimé l'appel à la fonction de stats (ce qui était déjà fait depuis longtemps quand on était sur les pages perso de Free.fr)
J'ai rajouté un calcul du temps d'exécution comme ça :
au tout début du script :
<?php $temps_debut = microtime();
et tout à la fin :
$temps_calcul = microtime() - $temps_debut; echo "Page générée en $temps_calcul secondes"; ?>
Il se trouve que la valeur affichée est parfois négative !! Ya un truc qui déconne vraiment ou j'utilise une fonction qui n'est pas précise ?
Dernière modification par Kistrof (11-04-2008 13:12:59)
Hors ligne
http://fr.php.net/manual/fr/function.microtime.php
Lorsque cette fonction est appelée sans l'argument optionnel, elle retourne la chaîne "msec sec" avec sec qui est mesurée en secondes depuis le début de l'époque UNIX, (1er janvier 1970 00:00:00 GMT), et msec qui est le nombre de microsecondes de cette heure. Les deux parties de la chaîne sont retournées sous la forme de secondes.
Hors ligne
Oui, je viens de voir ça xD ça m'apprendra à pas lire complètement la doc !!
J'ai été trop vite et je croyais que ça retournait une valeur en ms !
Donc j'ai corrigé mon script (en repiquant la fonction qui est en exemple d'ailleurs ^^)
ça compte un peu mieux les secondes et effectivement, ça tourne pas bien du tout : 5 sec minimum 
Ce soir, je sauvegarde la bdd et je réinstalle un NK vide que je re-paramétrerai à la main
Dernière modification par Kistrof (11-04-2008 14:14:01)
Hors ligne
J'avoue que cette affaire m'intrigue
Dis nous en plus quand tu auras des infos

Hors ligne
J'ai mis des appels à la fonction microtime(); un peu partout dans le script, voilà le résultat après quelques investigations :
Page générée en 6.71765303612 secondes --> temps total gauche = 5.8703019619 secondes --> colone de gauche unik_blocks = 0.0130109786987 secondes --> entêtes (derniers matchs, photos des membres, ...) file = 0.765864133835 secondes --> le centre de la page footer = 0.000492095947266 secondes --> colonne de gauche et bas de page
Donc déjà, ya une couille avec la colonne de gauche ! Reste à savoir quel est le bloc qui pose problème, ça va vite se savoir !! (désactivation un par un)
Hors ligne
Bon ben c'est trouvé, c'est le calendrier sur la gauche, sitot viré, le site a retrouvé sa rapidité !
Je vais explorer ce foutu calendrier pour trouver ce qui cloche !!
Je vous tiens au courant quand j'aurai trouvé, ça évitera à certain d'autres problèmes !
Edit: désactivation des anniversaires : plus de blocage, je cherche du côté des profils nés au mois d'avril ...
Edit: viré les dates de naissances des nés au mois d'avril : ça bloque tjrs, donc c'est la fonction qui va chercher les anniversaires pour les mettre dans le calendrier qui bloque ...
j'ai remis le fichier d'origine du bloc (fraichement dézippé du nk 1.7.6 officiel) et ça bloque toujours ...
Je suis bien parti pour débuguer ce bloc ^^
Dernière modification par Kistrof (12-04-2008 00:48:38)
Hors ligne
Hors ligne
Bon ben résumé rapide de ce qui se passe :
- fichier du bloc remis à celui d'origine : tjrs blocage
- désactivation de l'affichage des anniversaires : plus de problèmes
J'ai l'impression en lisant le code du bloc qu'il prend tous les anniversaires donc il y a peut-être un problème avec un seul membre, mais pas forcément né en avril. Je ferai ça demain, suis hs là !
Hors ligne
Hors ligne
Voilà le code qui semble poser problème :
$sql3 = mysql_query("SELECT user_id, age FROM " . USER_DETAIL_TABLE);
while (list($tuid, $tage) = mysql_fetch_array($sql3))
{
list ($tjour, $tmois, $tan) = split ('[/]', $tage);
if ($nuked['birthday'] == "team")
{
$and = "AND team > 0";
}
else if ($nuked['birthday'] == "admin")
{
$and = "AND niveau > 1";
}
else
{
$and = "";
}
$sql_test = mysql_query("SELECT pseudo FROM " . USER_TABLE . " WHERE id = '" . $tuid . "' " . $and);
$test = mysql_num_rows($sql_test);
if ($tmois == $month && $tjour == $event_date && $test > 0)
{
$nb_birthday++;
}
}
Il est exécuté 29 fois car il est lui-même dans une boucle.
J'ai un appel à microtime() juste avant et un juste après comme ça :
for($count = 0;$count < (6 * 7);$count++) // la boucle générale
{
.....
.....
$time_debug[$i_debug] = microtime_float();
$i_debug++;
la boucle en cause citée ci-dessus
$time_debug[$i_debug] = microtime_float();
$i_debug++;
.....
.....
}
La fonction microtime_float() est une fonction qui fait appel à microtime() mais qui renvoie le résultat en microsecondes
$time_debug est un bête tableau (en variable globale)
$i_debug est initialisée à 0 au tout début (en variable globale)
A la fin, je fais la différence de tous les éléments du tableau avec son élément précédent.
les chiffres pairs : c'est la boucle
les impairs : le reste de la boucle qui est autour
Sur le site clanfree :
0 = 0.169043064117
1 = 0.00875496864319
2 = 0.168456077576
3 = 0.00868988037109
4 = 0.176104068756
5 = 0.00909495353699
6 = 0.197263002396
7 = 0.00932502746582
8 = 0.177970170975
9 = 0.00889682769775
..... jusqu'à la ligne 58
Si on fait 0.15 x 30, ça fait déjà 4.5 secondes !
Sur le site local :
0 = 0.00166893005371
1 = 0.00016713142395
2 = 0.00143694877625
3 = 0.000160932540894
4 = 0.0014431476593
5 = 0.000159025192261
6 = 0.0015709400177
7 = 0.000164985656738
8 = 0.00143885612488
9 = 0.000160217285156
..... jusqu'à la ligne 58
cette boucle prends entre 0.15 et 0.25 secondes !
Hors ligne