2017-11-02 8 views
1

私はフレッシュインストールapache-airflow 1.8.2を持ち、Webサーバーを起動し、すべてのWebページ要求に対して終了しました。新しいワーカーが起動するのを待っている間、約30秒間リクエストがハングアップしました。この問題を解決するのに役立つ必要があります。すべてのリクエストに対してgunicornワーカーが終了します

詳細

の下に、私はapache-airflow 1.8.2をインストールし、this guideを追ってきました。私はポート8081でWebサーバーを開始しました。

ブラウザを使用してサーバーにアクセスすると、応答が非常に遅くなります。コンソールの出力を見て、Webページを読み込むたびに「Worker existing」と表示されてから、長時間ポーズして「Booting worker」と言います。

ソースコードを掘り起こした後、私はこれらがガンコルンの労働者であることを知りました。私はガンコーンやエアフローやフラスコの経験がないので、これが期待される動作かどうかはわかりませんが、そうしてはいけないと感じています。少なくとも1つのWebサーバーは、すべてのWebページに対して30分間はハングしません。

コンソール出力:

---> Browser request 
[2017-11-01 19:08:07 -0700] [14549] [INFO] Worker exiting (pid: 14549) 
---> Hangs for 30s 
[2017-11-01 19:08:37 -0700] [13316] [INFO] Handling signal: ttin 
[2017-11-01 19:08:37 -0700] [14698] [INFO] Booting worker with pid: 14698 
/Users/michael/Programs/clones/airflow/airflow/www/app.py:23: FlaskWTFDeprecationWarning: "flask_wtf.CsrfProtect" has been renamed to "CSRFProtect" and will be removed in 1.0. 
    csrf = CsrfProtect() 
/Users/michael/Programs/miaozhen/tests/airflow-test/lib/python3.6/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.cache is deprecated, use flask_cache instead. 
    .format(x=modname), ExtDeprecationWarning 
127.0.0.1 - - [01/Nov/2017:19:08:37 -0700] "GET /admin/ HTTP/1.1" 200 95063 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" 
[2017-11-01 19:08:38,096] [14698] {models.py:168} INFO - Filling up the DagBag from /Users/michael/airflow/dags 
---> other GET requests on the same webpage, skipped here for simplicity 
[2017-11-01 19:08:39 -0700] [13316] [INFO] Handling signal: ttou 

今私はapache-airflow 1.8.2のソースバージョンを実行している(つまり、ソースをクローン化されたタグをチェックアウトし、そしてpip install -e .とともにインストールされる)virtualenvに。しかし、私も試みた:virtualenvなしでピピバージョン(pip install apache-airflow)を実行しています。 virtualenvなしでソースバージョンを実行しています。また、すべてのインストールで同じ問題が発生するため、これらの違いは無関係です。

私のPythonのインストールは、次のとおりです。

$ python -VV 
Python 3.6.3 (default, Oct 4 2017, 06:09:38) 
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)] 

編集:私は別のマシン(Ubuntu Linuxの16.04 + Pythonの3.5)でapache-airflowを実行している&をインストールしようとした、と問題はありません

。また、Python 3.6でMacにいる他の人に尋ねましたが、問題はありません。マシンに奇妙なことがあると思います...どうすればこの問題をデバッグできますか?

答えて

0

ソースコードにデバッグした後、私は問題を切り分けることができましたが、ガンコンとは関係ありません。

問題は、私はそれが今で無効だとして、問題がクローズされるべきだと思うthis

$ time python -c 'import socket; socket.getfqdn()' 

real 0m30.051s 
user 0m0.018s 
sys  0m0.013s 

ですが、私はそれを行うにはどのようには考えています。

0

従業員は定期的に信号ttou(平均値decrement # of processes by one)を出すことが意図的です。これは定期的に労働者を爽快にする気流です。この機能を追加したAIRFLOW-276で読んだことに基づいて、作業者をリフレッシュすることは、新しいDAGまたは更新されたDAGでピックアップすることです。この動作は、気流設定でworker_refresh_intervalworker_refresh_batch_sizeに変更できます。

sourceを見ると、古い労働者を扇動する前に新しい労働者を扇動するので、これがあなたの要求を遅らせる原因にはならないと思います。ただし、worker_refresh_batch_size = 0を使用して無効にすることができます。

+0

ありがとうございました!私は 'worker_refresh_batch_size = 0'を試しました。これは、労働者が退室して産卵することを不可能にしますが、依頼を受けてから約30秒遅れています。また私は私の質問を更新しました、それを見てください。 –

関連する問題