2012-02-09 13 views
0

私は管理対象のインターフェースしか持っていないdjangoサイトを持っています。なぜ私のdjango/psqlサイトは非常に遅いのですか?

単純なページは、ほとんどの場合、10個の項目の表のように読み込みます。

しかし、たくさんのインラインを持つページなどは、ロードに5〜10秒かかることがあります。ほとんど使用できません。

これは決して巨大なデータベースではありません。私は数十のモデルを持っており、テーブルは500以上のエントリを持っていません。

最近のクアッドコアXeonでUbuntu 10.04を12 GB RAMで実行しています。

問題は、運用サーバー(mod_wsgi)と開発サーバーでも発生します。一般にプロダクションサーバーでは悪化しますが、どちらも非常に遅いです。

遅延中に、1つのCPUコアが(私が運用サーバーを使用している場合は)Apacheサーバー用に、またはPython(開発サーバーを使用している場合)用に最大限使用されます。

私はWSGIDaemonProcessで遊んでみましたが、スレッドとプロセスの数を変更しましたが、役に立たなかった。

以下は私のapache設定ファイルですが、私はdevサーバにも問題があると言っていますが、これは実際にはApacheの問題ではないかもしれません。

ありがとうございました。私はCとMATLABのプログラマーであり、サーバー、ネットワーク、データベース、またはPythonについてよく知らない。また、私は、遅いジャンゴの応答にいくつかのスレッドがあることを認識し、私はそれらをすべて読んだが、私は自分の状況に役立つものを見つけていない。ありがとう!

WSGIDaemonProcess MY_ACTUAL_IP_ADDRESS user=MY_USERNAME group=MY_USERNAME threads=4 
WSGIProcessGroup MY_ACTUAL_IP_ADDRESS 

WSGIScriptAlias /wsgi /neuroling/projects/neuroxy/neuroxy_project/neuroxy.wsgi 
<Directory /neuroling/projects/neuroxy/neuroxy_project/> 
    Order allow,deny 
    Allow from all 
</Directory> 

Alias /media/ /var/www/media/ 
Alias /static/ /var/www/static/ 

<Directory /var/www/static> 
Order deny,allow 
Allow from all 
</Directory> 

<Directory /var/www/media> 
Order deny,allow 
Allow from all 
</Directory> 
+0

「たくさんのインライン」とはどういう意味ですか?また、ページを開いて、内容を(Ctrl + S)HTMLファイルとしてデスクトップに保存してから、デスクトップから再度開きます。まだ遅い場合はブラウザ、速い場合はサーバー、さらに調査することができます。私は確信している場合は、CPUのCPUが渋滞している場合は、サーバーが絶対に確信している。 – Furbeenator

+0

最も遅いページタイプでは、6つのインラインがあり、通常は0〜2つのエントリがあります。しかし、読み込みに数秒かかる別のページでは、インラインが1つしかありません。インラインには通常、約10のエントリがあります。私はあなたが示唆したようにWebページを保存し、FireFoxで即座に開くことができます。だから、ブラウザではなくサーバーです。助けてくれてありがとう! – smwilsonau

+0

コンテクストをテンプレートに送り返すビューコードの少なくとも一部を投稿してください。たぶんいくつかの埋め込みループや他の放物線コードシーケンスがあります。機密情報がないことを確認してください。 – Furbeenator

答えて

1

遅い場所を切り離すために、Djangoデバッグツールバーを試しましたか?

また、New Relicなどの本番アプリケーションのパフォーマンス監視ツールを使用することもできます。

http://blog.newrelic.com/2011/11/08/new-relic-supports-python/

http://www.newrelic.com

新しいRelicのは、利用可能なすべての機能を備えた2週間の試用期間があります。その間、問題の解決にはパフォーマンスの低下とトランザクショントレースの機能の低下を十分に活用してください。 2週間後には、無料のサブスクリプションの機能レベルに下がりますが、トランザクションのトレースが遅くなりますが、Webトランザクションに対するパフォーマンスの低下はあります。

+0

私はデバッグツールバーをインストールしようとしていますが、動作させることができません。これをsettings.pyに追加しました:import sys path = '/...../django-debug -toolbar-944bfd8/debug_toolbar ' パスがsys.pathにない場合: sys.path.append(path)と最初の回答コード:[http://stackoverflow.com/questions/6390310/how-do -i-see-the-django-debug-toolbar](http://stackoverflow.com/questions/6390310/how-do-i-see-the-django-debug-tool bar) – smwilsonau

+0

これは、 'debug_toolbar.middleware.DebugToolbarMiddleware'という行で失敗しています。これをMIDDLEWARE_CLASSESに追加すると...パスなどを設定するはずですか? – smwilsonau

3

私はこれを今解決しました。私は自分のデータベースのコピーを作成し、それが速度に影響するかどうかを確認するために、ほとんどのデータを削除しました。確かに、それは遅く停止しました。それは、問題がApacheやそれ以外のものではなく、データベース(またはアクセス)に関するものであるという事実に私を結びつけました。

それでは、私はpostgresqlのログを有効にし、ログを調べました。文字通り何千もの奇妙なSQL文が送られてきて、無関係なように見えました。より詳細な検査では、何千ものエントリが含まれているForeignKey選択ボックスに記入されていることが明らかになりました。実際にはこれらのエントリのうちのいくつかしか実際には可能ですが、djangoのselect-boxをフィルタ処理するのは本当に複雑に思えますが、まだ達成していません。しかし、私がしたのは、これらのフィールドをraw_id_fieldsとして指定して、選択ボックスが作成されないようにすることでした。これは遅さの問題を完全に解決しました。

私の質問について提案した人に感謝します。私はこの答えが他人に役立つことを願っています。

+0

うわー、それは変です!さて、あなたはそれが分かってうれしいです。 :-) – Furbeenator

+0

データベースの役割を考えてみてください。 – smwilsonau

関連する問題