8
votes

la recherche NPM prend beaucoup de temps

Dans General NPM, la recherche se comporte étrange, il faut très longtemps, et cela varie en ordre et de temps, de temps en temps.

La première fois que j'ai écrit p> xxx pré>

Il a fallu plus de deux minutes. Les recherches suivantes ont pris environ 30 secondes. Parfois, je reçois les matchs avant la requête HTTP, parfois l'inverse de l'inverse: p>

Résultats correspondants Premier strong> P>

$ npm search jquery.appendgrid
npm http GET https://registry.npmjs.org/-/all/since?stale=update_after&startkey=1419625643062
npm http 200 https://registry.npmjs.org/-/all/since?stale=update_after&startkey=1419625643062
NAME               DESCRIPTION                                         AUTHOR      DATE              VERSION KEYWORDS
jquery.appendgrid  appendGrid - The dynamic table input jQuery plugin  =hkalbertl  2014-12-21 08:09  1.5.1  jquery-plugin ui header-detail master-d

npm

6 commentaires

L'internet est occupé? Sérieusement, à quel point le site Web est-il occupé? À quelle fréquence faites-vous cela? et pourquoi'?


J'ai lu votre commentaire comme si je fais quelque chose de vraiment stupide, laissez-moi savoir si c'est le cas. J'ai lu un didacticiel, il a dit que je pouvais rechercher des paquets dans NPM en effectuant une recherche NPM , c'est ce que je fais. Peut-être que je ne suis pas censé l'utiliser de cette façon? Si la fonctionnalité de recherche n'est pas pour la recherche de packages, qu'est-ce que c'est?


Et je ne comprends pas ce que vous entendez par "Internet" est occupé? ". Est-ce même une question? Pourquoi "Internet" est-il entre citations? Cela n'a rien à voir avec ma connexion Internet, c'est tout ce que je sais.


Je n'ai fait aucune hypothèse sur votre niveau de compétence. Désolé pour la confusion avec la partie "internet" du commentaire - ignorez-la. Était curieux de la fréquence à laquelle vous recherchez des choses en utilisant 'NPM' est tout. Ma compréhension, qui peut être défectueuse, est que vous utilisez "NPM" lors de l'installation de "nouvelles" choses. Donc, les quelques minutes qu'il faut ne serait pas un tel problème car cela ne se produit pas souvent.


Un ok :) je lis ce tutoriel, Tech.Pro/Tutorial/1190/... , essayant simplement d'apprendre NPM et Bower. J'ai fait la recherche NPM car ils l'écrivent et se comporte étrange (je pense). Je soupçonne donc que je suis soit en train de l'utiliser mal, sinon NPM est mis en place mal. Mais peut-être qu'il faut 30 secondes pour tout le monde, ce qui me semble idiot.


T doit faire beaucoup sur votre serveur local en ce qui concerne la vérification des dépendances ainsi que sur le serveur et assurez-vous que tout correspond. Ce n'est pas une tâche «triviale». Et oui, cela prend un moment ici aussi.


3 Réponses :


0
votes

Je suis arrivé cela aussi, je soupçonne que NPM met à jour une liste de packages mis en cache localement. Le long délai pourrait rechercher les données de repo.

Tout à l'heure actuelle, ma première recherche a pris 35 secondes (un peu de processeur, une longue attente, puis 10 secondes de CPU solide). Les recherches suivantes prennent 11 secondes, avec une utilisation de 97% de la CPU.

EDIT: 10 secondes CPU sur un phénom II de 3,6 GHz AMD, ajustez votre matériel en conséquence.


1 commentaires

Intéressant. Pour comparaison recherche de bower jQuery prend 2-3 secondes sur mon ordinateur.



17
votes

Il y a un an, lorsque ce tutoriel a été écrit, NPM avait moins de paquets publiés. Actuellement, il y a plus de 100 000. Pour effectuer une recherche NPM , npm Téléchargements d'un fichier JSON décrivant tous les packages, indexe croustillante, puis recherchent toutes les descriptions de package.

Le résultat est que NPM Search en tant que commande locale est essentiellement brisé maintenant - il se termine, mais il crée un fichier alarmant à le faire (60 Mo).

La solution de contournement suggérée pour l'instant est d'utiliser l'outil de recherche en ligne chez https://www.npmjs.com/


8 commentaires

Bonne réponse complète :)


... et utilise beaucoup de mémoire lors de la recherche. Un de mes environnements est un petit VM avec 256 Mo de mémoire et la recherche NPM ne s'y complétera pas (elle commence à battre et ne finit jamais).


J'ai fait une «recherche NPM» accidentelle sans nom de package et il a dit qu'il metchait la mise à jour du cache local pour une première course. J'ai donc supposé que cela se terminerait assez rapidement. mon problème est qu'il fonctionne toujours 45 minutes plus tard, utilise plus de 1 Go de swap et environ 1,5 Go de RAM. Je ne l'aurais pas encore ctl-c'd parce que je n'étais pas sûr si je parsaisons fondamentalement quelque chose si cela ne s'est pas terminé. Heureux je suis allé chercher. Je sais ne pas utiliser cet aspect de l'outil à l'avenir.


CTRL-C est un moyen sûr de l'interrompre.


Bien. Au moins maintenant, je ne cherche pas maintenant. Bien que cela me surprend cela n'a pas été réécrit (NPM en développement actif?) Ou éclipsé par quelque chose qui le fait mieux (la prolifération alarmante d'autres outils est exactement le problème ici - il semble que quelqu'un ait produit ce un). Je suppose que je fais moi-même, ou découvrez pourquoi je ne devrais pas, pourrait être un bon moyen de commencer à s'impliquer.


@Joncarter - NPM est en cours de développement actif, mais depuis une année écoulée (au moins?) Ils se sont concentrés sur des problèmes liés à l'exactitude et à la rapidité. NPM @ 3 est presque une réécriture au sol du pipeline d'installation de l'emballage et supprime plusieurs classes de conditions de course. Étant donné que la recherche en ligne existe comme une solution de contournement valide, la réécriture de la recherche a été complètement éteinte (pas simplement brûlées au dos).


Assez juste, je suppose. Vous devez donner la priorité à la priorité et cela ressemble à cela, espérons-le, être réparé lorsque NPM3 est terminé.


La recherche en ligne n'est pas vraiment une solution si vous souhaitez rechercher par programme. Ou existe-t-il un moyen d'obtenir des résultats lisibles à la machine? Mon cas d'utilisation particulière est que je veux vérifier quelle est la dernière version d'un paquet ...



1
votes

1 commentaires

Ce n'est pas que le npm repo lui-même est lent; C'est que la recherche locale comprend 1) télécharger un instantané du représentant 2) analysant que> 80 Mo de fichier JSON avec l'analyseur intégré (non diffusant) 3) la recherche de ce qui est lent. Le référentiel NPM est rapide, comme vous pouvez le constater lors de l'installation de packages.