de Mohja » Ven 22 Juin 2012, 07:18
Je vais donner quelques éclaircissements quand même sur le problème qui a eu lieu hier :
1) le script qui résoud les combats charge toutes les infos de tous les combats en une seule fois. Ca prend beaucoup de mémoire, tellement qu'il s'arrête en plein milieu avec un beau "out of memory".
2) en principe, le paramétrage par défaut de mon hébergeur devrait être suffisant. Nous avons déjà eu ce problème un jour, c'est ce fameux jour où rien n'a été lancé, ce jour "blanc", il y a quelques semaines. L'hébergeur m'a fait une config temporaire pour régler le problème, le temps que je trouve où se situe le souci (dans mes fichiers d'après lui).
3) N'ayant rien trouvé, j'ai appliqué une modif qui, je croyais, suffisait, avec un set_memory en php. Sauf que le plantage d'hier m'a prouvé le contraire, et surtout que le problème est ailleurs.
4) Le script a planté hier soit au chargement des valeurs, soit après exécution du premier combat (ce qui prouve que ça dépend des ressources disponibles sur l'hébergement mutualisé, à mon avis). Le combat de CAC n'est pas concerné, car je commence toujours pas les combats de round 3, puis 2, puis 1. Le seul qui aurait pu voir un combat caduque est celui qui participait à un round 3, mais là encore il n'aurait rien dû voir vu que le jeu est resté fermé (sauf pour un admin, qui peut accéder au jeu, même fermé, pour des raisons évidentes de maintenance du jeu).
5) Plutôt que d'échanger longtemps sur le sujet avec mon hébergeur sans être sûr de trouver une solution, et du coup prendre le risque d'avoir régulièrement ce problème, j'ai préféré modifier le script de combat. Le script résoud donc maintenant 50 combat (il y en avait 97, de mémoire, ce jour-là) puis s'arrête. Il reprendre 10 min plus tard et relance 50 combats. Etc. Cette solution me permettra de tenir sans problème jusqu'à 300 combats, ce qui n'arrivera probablement jamais. Au delà, il faudrait que je réduise un peu le temps entre 2 résolutions, ce que je peux faire sans grand risque.
6) Pour moi il n'y a donc plus de risque de "out of memory" sur le script de résolution de combat. Il me reste cependant un travail que j'ai aussi repoussé depuis longtemps, sur les statistiques : je ne fais aucune purge (sauf pour les glads morts ou les écuries supprimées), ce qui constitue par exemple rien que pour les stats quotidiennes des combattants pour 40Mo de données (la moitié des données du jeu !). Il faut qu'au delà de 6 mois, par exemple, je crée des consolidations mensuelles. Je parle de ça, car ça va me jouer des tours sur les exports quotidiens qui prennent de plus en plus de temps à cause de ces données.
Il me reste d'autres points à faire pour encore fiabiliser les scripts, mais depuis le début du jeu ça a fortement progressé, et vous ne le voyez pas (et moi non plus si je ne regarde pas les logs), mais très souvent des scripts s'arrêtent en plein milieu de leur execution et se relancent sans que ça ne pose aucun souci. Cette année, par exemple, j'ai largement amélioré la reprise d'un combat qui aurait été coupé en plein milieu. Avant ça posait des problèmes ou des combattants étaient notés comme ko mais ne l'étaient plus à la rééxecution du combat. Ce type de problème ne peut plus arriver.
Voilà pour les explications techniques. Histoire d'être transparent sur l'évolution du jeu et le problème qui nous a affecté hier.
Mohja, fondateur de l'Arène Challengers.
- je suis le maîîîîître ! Et toi, qui es-tu ? -