2011-09-07 2 views
0

J'utilise admin_assistant et ai piraté le support de MongoDB. Le seul problème est maintenant que les requêtes de la page d'index sont incroyablement lentes. admin_assistant utilise will_paginate pour ces requêtes. J'ai vérifié que le point de ralentissement exact est l'endroit où la collection de pagination will est d'abord accédée (.empty?). Dans le journal, je vois la requête, et après que je vois ces cours d'impression lentement:Mongoid est lent et montre cela dans le journal: MONGODB cursor.refresh() pour le curseur 3474711247518436755

 
MONGODB cursor.refresh() for cursor 3474711247518436755 
MONGODB cursor.refresh() for cursor 3474711247518436755 
MONGODB cursor.refresh() for cursor 3474711247518436755 
MONGODB cursor.refresh() for cursor 3474711247518436755 
MONGODB cursor.refresh() for cursor 3474711247518436755 
MONGODB cursor.refresh() for cursor 3474711247518436755 
MONGODB cursor.refresh() for cursor 3474711247518436755 
MONGODB cursor.refresh() for cursor 3474711247518436755 
MONGODB cursor.refresh() for cursor 3474711247518436755 
MONGODB cursor.refresh() for cursor 3474711247518436755 

Je vais probablement essayer de se débarrasser de will_paginate suivant, mais le reste du code est en fonction dès maintenant. Des idées sur ce qui pourrait provoquer le rafraîchissement du curseur?

+0

Ce message s'affiche lorsque trop de résultats sont récupérés depuis mongodb. Par défaut, mongodb fermera le curseur après 2 minutes, si le client ne récupère toujours pas toutes les données pendant ce temps. Ma conjecture est que la requête générée est finalement un objet de critère mongoïde et qu'elle n'a pas de méthode 'empty?', Donc l'appel est vide? il déclenche la récupération des résultats et génère un tableau de documents. Vous devriez le poster sur will_paginate ou mongoid list et pendant ce temps hack 'criteria # empty?' Pour tester 'criteria # count (true) == 0' – rubish

+0

Quand je me suis débarrassé de .empty? J'ai vu le même comportement .each. Je vois cela à chaque demande, et cela prend environ 3 secondes. Je vais essayer la liste de courrier Mongoid. –

+0

'each' aura le même comportement que' empty? 'Si ma supposition est correcte, vous devriez essayer' count' pour voir si elle conduit également à la même situation (elle ne devrait pas). – rubish

Répondre

0

Merci pour vos commentaires, rubish! Je suis passé de will_paginate à kaminari et tout fonctionne maintenant.

Questions connexes