2008-12-12 7 views
15

J'ai une nouvelle installation de django 1.0 et une simple page à partir de cela prend 5 secondes pour charger. Sur l'ordinateur de mon collègue, cela prend presque pas de temps.django est très lent sur ma machine

Je commence le serveur en utilisant

 
python manage.py testserver 

je peux voir chaque demande GET (PNGs et feuilles de style) prendre environ une demi-seconde.

Une autre chose étrange, que je pense est liée, est que les tests fonctionnels de l'application tournent beaucoup plus lentement sur ma machine avec MySQL (sur un ordre de 100 fois plus lent que sur la machine de mon collègue). Lorsque je définis l'application pour utiliser sqlite, ils s'exécutent assez rapidement. Je voudrais m'exclamer que sqlite ne change pas beaucoup le temps qu'il faut pour charger une page, mais accélère le démarrage du serveur.

Cela ressemble à un problème d'E/S, mais je ne vois pas de problèmes de performances généraux sur ma machine, à part django au moins. Django fonctionne sur python2.4, je suis sous Vista. J'ai également vérifié python2.5.

Merci ΤΖΩΤΖΙΟΥ, Il doit être totalement un problème de DNS, parce que la page se charge rapidement dès que au lieu de http://localhost:8000/app Je vais à http://127.0.0.1:8000/app.

Mais à quoi cela pourrait-il causer? Mon fichier hôte ne dispose que de deux entrées:

 
127.0.0.1 localhost 
::1   localhost 
+0

Est-ce la première fois que vous demandez la page ou à chaque fois? En outre, lorsque vous utilisez runserver est-il le même? –

+0

C'est le bug le plus stupide mais j'ai couru dans toute ma vie! Mon fichier hosts est vide car dans Windows 7 ces deux lignes sont traitées [dans le serveur DNS lui-même] (http://serverfault.com/questions/4689/windows-7-localhost-name-resolution-is-handled-within- dns-lui-même-pourquoi). Et les mêmes symptômes! L'ajout de la ligne "127.0.0.1 localhost" le résout. Merci mec! –

Répondre

17

Firefox a un problème de navigation vers localhost sur certaines machines Windows. Vous pouvez le résoudre en désactivant ipv6, ce qui n'est pas vraiment recommandé. L'utilisation directe de 127.0.0.1 est un autre moyen de contourner le problème.

+0

Même lorsque localhost est dans le fichier hosts? Intéressant ... – Powerlord

+0

Nice info, fuzzyman! – tzot

+6

Même problème et solution sous Chrome sous Windows 7. –

0

Désactiver AV analyse & voir si cela fait une différence. Cela pourrait aussi être causé par Vista. Effectuez une mise à niveau vers le dernier Service Pack et réessayez.

2

Je pense que c'est le serveur de développement, ce n'est pas optimisé pour la vitesse ni la sécurité. J'ai remarqué que les fichiers statiques servant spécifiquement (c'est-à-dire les médias) sont lents.

3

Puisque vous signalez que la machine de votre ami n'a pas de retard, et je suppose que le vôtre et le sien sont des ordinateurs comparables, cela pourrait être un problème lié au DNS. Essayez d'ajouter à la fois l'adresse IP du client et celle du serveur dans le fichier hosts du serveur.

Si vous exécutez Django sur * nix, il s'agit du fichier /etc/hosts. Si vous l'exécutez sur MS Windows, il s'agit du fichier %WINDIR%\SYSTEM32\DRIVERS\ETC\HOSTS. (Ils sont des fichiers texte et peuvent être modifiés par votre éditeur de texte favori.)

+0

5 secondes de retard sonne toujours comme un problème de résolution de problème pour moi. –

1

Et si tout le reste échoue, vous pouvez toujours cProfile votre application et voir où est exactement le goulot d'étranglement.

1

J'ai eu le même problème dans le passé. Il peut être résolu en supprimant la ligne suivante de votre fichier hosts.

::1   localhost 

Une fois que c'est parti, vous devriez être en mesure d'utiliser localhost à nouveau, rapidement.

2

J'ai eu le même problème aussi, je l'ai remarqué avec Firefox sur les machines Vista et Windows 7. L'accès au serveur de développement 127.0.0.1:8000 a résolu le problème.

0

localhost complètement by-pass sans modifier le fichier hosts ou les paramètres de Firefox, vous pouvez installer l'addon Redirector et faire une règle pour rediriger de localhost 127.0.0.1. Utilisez ces paramètres

Include pattern : http://localhost* 
Redirect to  : http://127.0.0.1$1 

Laissez les autres champs vides.

7

Aucun de ces articles m'a aidé. Dans mon cas, Justin Carmony m'a donné la réponse.

Problème

je délimiterai [nom d'hôte] .local à 127.0.0.1 dans/etc/hosts à des fins de développement facile et les demandes de dns ont été prendre 5 secondes pour résoudre. Parfois, ils se résolvent rapidement, d'autres fois ils ne le feraient pas.

Solution

Apple utilise .local pour faire un peu de magie sur plus récente Bonjour Snow Leopard construit (je pense que je commencé à remarquer après la mise à jour 10.6.8) et Mac OS X Lion. Si vous changez votre nom d'hôte dev pour commencer par local au lieu de fin avec local, vous devriez tous être définis. De plus, vous pouvez utiliser n'importe quel TLD en plus de local et cela fonctionnera sans conflit.

Exemple

test.local pourrait devenir:

  • local.test.com
  • test.dev
  • essai [quoi que ce soit, mais local]

. et l'entrée de votre fichier hosts serait:

local.test.com 127.0.0.1 

Note: Cette solution a l'avantage d'être un sous-domaine de [nom d'hôte] .com qui le rend plus facile de spécifier un nom de domaine d'applications pour les API Facebook, etc.

pouvez également Exécuter dscacheutil -flushcache dans le terminal pour une bonne mesure après la mise à jour/etc/hosts

+0

cela aussi résolu pour moi et je suis un utilisateur Windows :-) merci! – Esben

1

J'ai eu le même problème, mais il a été causé par mysqld. L'application a fonctionné très rapidement en production avec wsgi et un serveur mysql dans le même hôte mais avec un ralentissement dans le développement avec l'option django runserver et un serveur mysql distant.

J'ai remarqué en utilisant "show processlist" que les connexions dans la base de données où coincé dans l'état "login" avec l'utilisateur "utilisateur non authentifié" et cela me fait remarquer le problème où dans le processus d'authentification.

En cherchant le vrai problème, j'ai finalement remarqué que mysqld essayait d'obtenir le nom DNS de mon ip et en désactivant le nom résolution dns, j'ai résolu le problème.

Pour ce faire, vous pouvez ajouter cette ligne dans mon.fichier CNF:

skip-name-resolve

0

i a le même problème.

la solution était:

  • je tentais de commencer une version localy qui a été déployée usualy sur un serveur Web dans la production.
  • Les fichiers statiques dans la production ont été servis par une config apache et non avec django statique servent

donc je juste décommenté retour mon statique servir urls:/

1

Mise à jour vers Django 1.3 ou plus récent.

Si vous avez toujours ce problème en 2012 (avec Chrome), assurez-vous que vous effectuez une mise à niveau. Dans 1.3, un bug a été corrigé lié à la lenteur lorsque le serveur dev était mono-thread.

La mise à niveau a résolu mes problèmes. Je courais Django 1.2 puisque c'est la valeur par défaut sur Debian Squeeze.

Questions connexes