{"action":"created","issue":{"url":"https://api.github.com/repos/zestedesavoir/zds-site/issues/2913","labels_url":"https://api.github.com/repos/zestedesavoir/zds-site/issues/2913/labels{/name}","comments_url":"https://api.github.com/repos/zestedesavoir/zds-site/issues/2913/comments","events_url":"https://api.github.com/repos/zestedesavoir/zds-site/issues/2913/events","html_url":"https://github.com/zestedesavoir/zds-site/pull/2913","id":94902957,"number":2913,"title":"optimise la page d'accueil des forums","user":{"login":"artragis","id":1523653,"avatar_url":"https://avatars.githubusercontent.com/u/1523653?v=3","gravatar_id":"","url":"https://api.github.com/users/artragis","html_url":"https://github.com/artragis","followers_url":"https://api.github.com/users/artragis/followers","following_url":"https://api.github.com/users/artragis/following{/other_user}","gists_url":"https://api.github.com/users/artragis/gists{/gist_id}","starred_url":"https://api.github.com/users/artragis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/artragis/subscriptions","organizations_url":"https://api.github.com/users/artragis/orgs","repos_url":"https://api.github.com/users/artragis/repos","events_url":"https://api.github.com/users/artragis/events{/privacy}","received_events_url":"https://api.github.com/users/artragis/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/zestedesavoir/zds-site/labels/Back","name":"Back","color":"207de5"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":9,"created_at":"2015-07-14T09:20:15Z","updated_at":"2015-07-22T18:56:14Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/zestedesavoir/zds-site/pulls/2913","html_url":"https://github.com/zestedesavoir/zds-site/pull/2913","diff_url":"https://github.com/zestedesavoir/zds-site/pull/2913.diff","patch_url":"https://github.com/zestedesavoir/zds-site/pull/2913.patch"},"body":"| Q                             | R\r\n| ----------------------------- | -------------------------------------------\r\n| Correction de bugs ?          | [non]\r\n| Nouvelle Fonctionnalité ?     | [non]\r\n| Tickets (_issues_) concernés  | [#2904, #2084]\r\n\r\nJe commence donc mon inspection des pages des forums pour comprendre pourquoi on est si mauvais sur ces pages.\r\n\r\nComme expliqué [ici](https://zestedesavoir.com/forums/sujet/3429/la-release-v156/?page=6#p65620), la page d'accueil faisait quelques requêtes bien délirantes et en trop grand nombre.\r\n\r\nCette PR ne pousse pas les optimisations au max car je ne connais aps trop les effets de bord. n'oublions pas que plus on essaie d'optimiser plus les différences entre sqlite et mysql se font sentir. \r\n\r\nJe préfère donc faire des pr par petit paquets pour vous faciliter le test. Et surtout pour mieux détecter les goulets d'étranglement.\r\n\r\nLes trois optimisations apportées par cette PR sont celles-ci : \r\n\r\n- quand on n'est pas connecté, on n'essaie pas de chercher des objets accessibles uniquement aux connectés,\r\n- quand on veut juste une url, on ne charge que ce qui est utile à générer une url,\r\n- quand on sait qu'on va afficher les comptages de partout, on essaie de faire un précalcul (sql est très bon pour ça, j'ai tendance à penser que la différence sera encore plus flagrante avec mysql)\r\n\r\nJe n'ai pas vraiment de consigne pour la QA. Vérifiez juste que la page d'accueil des forums s'affiche avec les bons chiffres et les bonnes urls pour les utilisateurs anonymes comme connectés.\r\n\r\n\r\nenviron 50% de requêtes en moins, 25% de temps en moins"},"comment":{"url":"https://api.github.com/repos/zestedesavoir/zds-site/issues/comments/123826895","html_url":"https://github.com/zestedesavoir/zds-site/pull/2913#issuecomment-123826895","issue_url":"https://api.github.com/repos/zestedesavoir/zds-site/issues/2913","id":123826895,"user":{"login":"pierre-24","id":7889675,"avatar_url":"https://avatars.githubusercontent.com/u/7889675?v=3","gravatar_id":"","url":"https://api.github.com/users/pierre-24","html_url":"https://github.com/pierre-24","followers_url":"https://api.github.com/users/pierre-24/followers","following_url":"https://api.github.com/users/pierre-24/following{/other_user}","gists_url":"https://api.github.com/users/pierre-24/gists{/gist_id}","starred_url":"https://api.github.com/users/pierre-24/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pierre-24/subscriptions","organizations_url":"https://api.github.com/users/pierre-24/orgs","repos_url":"https://api.github.com/users/pierre-24/repos","events_url":"https://api.github.com/users/pierre-24/events{/privacy}","received_events_url":"https://api.github.com/users/pierre-24/received_events","type":"User","site_admin":false},"created_at":"2015-07-22T18:56:13Z","updated_at":"2015-07-22T18:56:13Z","body":"# Rapport de QA\r\n\r\nJ'ai testé systématiquement 3 pages (avec sqlite),\r\n\r\n+ La page principale des forums (`/forums/`), \"PAF\"\r\n+ La page du forum android (qui chez moi contient 3 sujets, totalisant 15 réponses), \"Android\"\r\n+ La page du tag \"android\" (qui chez moi contient 9 sujets, totalisant 71 réponses), \"Tag android\"\r\n\r\n(et j'ai visité 4x chaque page, pour avoir une moyenne un peu plus représentative)\r\n\r\n## Utilisateur déconnecté\r\n\r\n| Page | #req sur *dev* | tps sur *dev* | #req sur opti | tps sur opti | remarques \r\n| ------- | ------------------- | ----------------- | ----------------- | -------------- | ---------------\r\n| PAF | 94 | 1699 | 46 | 758 | Divison des requêtes et du temps par deux !\r\n| Android | 32 | 773 | 27 | 381 | Même remarque que plus hau\r\n| Tag android | 75 | 1762 | 58 | 1281 | L'amélioration reste non négligeable !\r\n\r\n## Utilisateur connecté, sans notif\r\n\r\n(et sans avoir jamais visité aucun sujet)\r\n\r\n| Page | #req sur *dev* | tps sur *dev* | #req sur opti | tps sur opti | remarques \r\n| ------- | ------------------- | ----------------- | ----------------- | -------------- | ---------------\r\n| PAF | 104 | 1313 | 56 | 957 | +10 requêtes par rapport à déconnecté\r\n| Android | 43 | 844 | 38 | 779 | +11 requêtes\r\n| Tag android | 86 | 2043 | 69 | 1327 | +11 requêtes\r\n\r\nL'amélioration est moins forte mais reste non-négligeable. Par contre, on constate en comptant les requêtes que rien n'a changé: le même nombre de requêtes est ajouté dans les deux cas, donc l'effet provient probablement de l'amélioration du tableau précédent.\r\n\r\n## Utilisateur connecté ayant voyagé\r\n\r\nTout les sujets sont consultés (12 `TopicRead` en BDD)\r\n\r\n| Page | #req sur *dev* | tps sur *dev* | #req sur opti | tps sur opti | remarques \r\n| ------- | ------------------- | ----------------- | ----------------- | -------------- | ---------------\r\n| PAF | 96 | 1587 | 56 | 424\r\n| Android | 38 | 1133 | 38 | 451 | Est ce que l'amélioration du temps est justifiée ?\r\n| Tag android | 69 | 1682 | 69 | 829 | *même remarque*\r\n\r\nTous les sujets sont consultés et suivi (12 `TopicRead` et 12 `TopicFollowed` en BDD)\r\n\r\n| Page | #req sur *dev* | tps sur *dev* | #req sur opti | tps sur opti | remarques \r\n| ------- | ------------------- | ----------------- | ----------------- | -------------- | ---------------\r\n| PAF | 196 | 1795 | 156 | 1218\r\n| Android | 138 | 1182 | 138 | 1120\r\n| Tag android | 169 | 1559 | 169 | 1655\r\n\r\nOn constate du coup que l'optimisation n'as plus lieu que sur la page d’accueil, en tout cas en nombre de requête. Le temps reste meilleure dans le premier cas, mais on constate que les *perfs* s'effondre quand l'utilisateur commence à suivre des sujets (**+100 requêtes !!!!!**).\r\n\r\n## Conclusions\r\n\r\nClairement, **c'est mieux** et munin va le sentir passer (dans le bon sens). Mais il y a encore du travail à faire côté sujets suivis si on veux vraiment que la *prod* se porte mieux (ce que Munin ne rend pas)."}}