2017-04-26 3 views
1

Der Produktionsserver, der meine Arbeit betreibt, ist deutlich schlechter als meine lokale Entwicklungsumgebung, in der alles schnell und reibungslos abläuft, sodass ich nicht herausfinden kann, ob die von mir vorgenommenen Änderungen eine schlechte Leistung in der Produktion haben oder nicht.Django: Wie emuliert man einen langsamen Server?

In diesem Server nehmen Antworten sehr viel Zeit in Anspruch, meistens gehe ich von den Datenbankabfragen aus und nicht von der Verarbeitungsleistung und der Speicherkapazität des Servers.

Ich frage mich, ob es eine Möglichkeit gibt, eine Serverkonfiguration einzurichten, um diese schlechten Bedingungen zu emulieren: Wie kann ich die Leistung meines lokalen Django-Servers reduzieren, so dass die Antworten länger dauern, die Rechenleistung gering ist und vor allem die Datenbank Verbindung ist langsam?

Ich hoffe, das ist keine verrückte Frage, aber es ist etwas, was ich wirklich herausfinden muss, wie sich mein Code in der Produktion verhalten wird, da ich das aus meiner lokalen Umgebung nicht sagen kann.

+0

Wenn Sie glauben, es ist Ihre Datenbank, könnten Sie versuchen, Ihre langsamsten Abfragen zu finden; [postgres] (https://dba.stackexchange.com/questions/92071/get-statistics-of-slow-running-queries) oder [mysql] (https://dev.mysql.com/doc/refman/5.7 /slow-query-log.html). – castis

+0

@castis Es ist nicht ** meine ** Datenbank, es ist Produktion, und ich habe keinen Zugriff oder Kontrolle darüber. – dabadaba

+0

Sie könnten nur Zeit, wie lange eine Abfrage benötigt, um eine Reihe von Zeiten zurückzugeben, erhalten Durchschnitt und dann einen Schlaf in Ihrer Version, um die Verzögerung zu simulieren. – Jacobr365

Antwort

1

Wie einige Kommentare oben vorschlagen, könnten Sie den Dev-Server verlangsamen, indem Sie tun, was this answer vorschlägt.

Wenn Sie die Datenbank vermuten, können Sie die QuerySet Methoden in db/models/query.py im django-Code ändern und so etwas wie hinzufügen:

from time import sleep 
sleep(0.5) # this is seconds, not milliseconds ;) 

aber das ist alles Vermutungen.

Sie könnten etwas wie opbeat in Ihrem Code einrichten, um tatsächliche Produktionsinformationen über Ihren Code zu erhalten, damit Sie herausfinden können, was das Problem wirklich ist (und die Produktion beschleunigen, anstatt dev zu verlangsamen!).

Für Ihre lokale Entwicklungsumgebung können Sie auch django-silk ausprobieren, um einen Eindruck davon zu bekommen, wie viele Abfragen Ihr Code ausführt.