migrate
は定期的に実行していますか?プロジェクトが近づいてからプロダクション状態に入ると、実行するマイグレーションは多くありません。または、migrate --list
に移行するものがないことが示されていても、migrate
にかかる時間がかかることを意味しますか?
また、Postgresが何をしているのかを知るには、時間を含むクエリのログを設定する必要があります。 http://www.postgresql.org/docs/9.5/static/runtime-config-logging.html
がexplain analyze
SQLコマンドを使用してこれらのクエリを実行します:
psql> EXPLAIN ANALYZE <complete query>;
http://www.postgresql.org/docs/9.5/static/using-explain.html
は、あなたがさらに取得するexplain
から取得する情報を提供する必要があるあなたは、クエリを実行しているだけ長くログインしてフィルタリングすることができます助けて。
EDIT:あなたが移行ファイルの多くを持っている場合にも
は、あなたがsquash migrations
に試みることができます。私はDjangoが1つ1つずつ自分自身で動作すると想像することができます。だから、お互いに依存して多くのファイルを持つ多くのアプリを持っている場合、何が起こるか想像することができます。 https://docs.djangoproject.com/en/1.9/topics/migrations/#squashing-migrations
EDIT 2:
答えにコメントから、この移動:
はmigrate --list
はまた、多くのCPUを消費していますか?そうでない場合は、最初にそれを実行して、移行する必要が本当にあるかどうかを確認し、オープンマイグレーションを持つアプリでmigrate
を実行するだけです。
私はこれが一番良いと思います。より詳細にプロファイルできる場合は、実際にDjangoコミュニティに助けを求めるかもしれません。 Djangoのマイグレーションを調整して、あまり(実際は不要な)作業をする方法を見つけるための興味深いセットアップがあると思います。しかし、私は移行のコードがあまりにも多くないのでわかりません。 これはまた、私たちが話しているアプリの数と移行ファイルの数にもよる。 30個未満のアプリ(サードパーティーを含む)がある場合は、正常に動作するはずですが、何か間違っていると思います(IMHO!)。
また、サーバーのリソース使用状況が表示されていません。スローダウンがスワッピング/あまりにも多くのRAMの使用に起因するならば、(プロセスに)より多くのRAMを供給することによって、それを高めることができるかもしれません。
好奇心の邪魔をして、グラフをどのように生成しましたか? – JRodDynamite
@JasonEstibeiro:私はこのライブラリを使用しました:https://github.com/jrfonseca/gprof2dot – Shubham
私は本当に 'migrate'を定期的に実行している理由を知りたいと思います。デプロイメント後、必要な場合にのみ、 – Risadinha