2016-12-26 11 views
8

私の技術スタックは、チャネルバックエンドとしてのRedis、データベースとしてのPostgresql、ASGIサーバとしてのDaphne、アプリケーション全体のNginxです。すべてがDocker Swarmを使用して配備されており、RedisとDatabaseのみが外部にあります。私は20の仮想ホストを持っています、20のインターフェースサーバー、40のHTTPワーカー、20のWebSocketワーカー。ロードバランシングはIngressオーバーレイDockerネットワークを使用して行われます。djangoチャンネルのプロファイル方法は?

問題は、パフォーマンスに関して非常に奇妙なことが起こることがあります。ほとんどのリクエストは400ms未満で処理されますが、ごくわずかな負荷でも要求が2-3秒かかることがあります。 Djangoデバッグツールバーやミドルウェアベースのプロファイラで作業者をプロファイリングするのは何も表示されません(タイミング0.01s程度)

私の質問:django-channelsでリクエストパス全体をプロファイリングする良い方法はありますか?私は、各段階にかかる時間、つまり、作業者が処理を開始したとき、完了したとき、インターフェイスサーバーがクライアントに応答を送信したときに、Daphneによってリクエストが処理された時間を取得したいと思います。現在、私はこれをどのように解決するか考えていません。

+2

誰かが興味がある場合は、この投稿の作者がGoogleグループに質問したようです:https://groups.google.com/forum/#!topic/django-users/_aG8Py_r2QY – raiderrobert

+1

はい、それは私の質問です。私はいくつかの便利な方法を見つけました。そのうちの1つは、赤外線の監視です。私はすぐにここで詳細な説明を投稿します。 – Valar

+0

あなたのために働いたことを楽しみにしています。 – jaywhy13

答えて

0

KibanaやNew Relicのような監視ツールを使用し、小さなペイロードの応答に時間がかかる理由とその理由を監視してみませんか? Python、PostgreSQL、Memcache(Redis)に費やされた時間を教えてくれます。

関連する問題