12

CentOS 6.xサーバーにNGINX + uWSGI + Flaskをインストールすることに成功しました

しかし、構成に関してはまだ疑問があります。

1) サービスとして NGINX を実行しています: service nginx start/stop/restart
「ps aux | grep nginx」と入力すると、2 つのプロセスが表示されます:
- (ユーザー root による) マスター プロセス /usr/sbin/nginx -c /etc/nginx/nginx.conf
- (ユーザー nginx による) ワーカー プロセス
は問題ありませんか?

2) Flask の virtualenv をセットアップし、その virtualenv の下に uWSGI パッケージをインストールしました。
現在、「uwsgi /somedir/uwsgi.ini」と入力してuWSGIを手動で開始しています.uwsgi.iniは次のとおりです。

chdir = /myappdir
uid = pyuser
chmod-socket = 666
socket = /tmp/uwsgi.sock
module = run
callable = app
virtualenv = /myappdir/myvirtualenv

(ポイント 1 で説明したように) NGINX と同様に、uWSGI をサービスとして開始することは可能ですか? そのような場合、ユーザーは root または非 root である必要がありますか?

3) uWSGI を開始すると、現在、次の警告が表示されます。

*** Python threads support is disabled. You can enable it with --enable-threads ***

「uwsgi.ini」構成ファイルでは、多数のプロセスとスレッドも構成できることに気付きました。私が実行しているサーバーにはコアが 1 つしかないことを考慮して、複数のプロセスとスレッドをセットアップできますか? もしそうなら、いくつですか?

3b) NGINX 構成ファイル "/etc/nginx/nginx.conf" では、デフォルトで 1 である "worker_processes" を指定することもできます。これを増やすことはできますか、それともマルチコア サーバーの場合のみ 1 より大きくすることができますか?

4) スレッドのサポートが無効になっていることに加えて、uWSGI を開始すると、これらの警告も表示されます。彼らはどういう意味ですか?

*** WARNING: you are running uWSGI without its master process manager ***
*** Operational MODE: single process ***
*** uWSGI is running in multiple interpreter mode ***
4

2 に答える 2

6

コメントから最も重要なポイントを移動しました。

  1. ええ、それは正常な動作です。Nginx のマスター プロセスには、マシン上のリッスン ソケットを管理するためのルート権限が必要です。この フォーラム スレッドには、変更できると記載されていますが、問題が発生する可能性があります。ただし、Nginx ではワーカー プロセスの所有者を変更できます。

  2. uWSGI のインストール方法によって異なります。uWSGI がインストールされているapt-get場合は、次のように開始 (停止、再起動) できます。

    service uwsgi <action>

    経由で uWSGI をインストールしpipたので、daemonizeオプションでうまくいきます。

    /path/to/uwsgi --daemonize /path/to/logfile

    任意のユーザーで起動できますが、root で実行する場合は、gidおよび uidオプションを指定する必要があります。uWSGI のベスト プラクティス ページには次のように書かれています。

    常識: uWSGI インスタンスを root として実行しないでください。uWSGI を root として起動できますが、uid および gid オプションを使用して特権を削除してください。

    master-as-rootオプションも参照してください。

  3. 必要な数のプロセスとスレッドを作成できますが、処理しようとしているリクエストの数 (同時または 1 秒あたり) によって異なります。これについては、ここで読むことができます。さまざまな構成を試して、どれがよりうまく機能するかを選択します。

    3b. 基本的に、worker_processes同時リクエストの処理に役立ちます。この質問を参照してください。

  4. *警告: マスター プロセス マネージャーなしで uWSGI を実行しています*

    master.ini ファイルでオプションを指定していません。マスタープロセスは確かに不要ですが、非常に便利です。ワーカーを効果的に制御し、死亡時にリスポーンするのに役立ちます。

于 2013-07-12T19:26:31.433 に答える
1

3b) nginx が多くの CPU を消費する場合は、マルチコアを使用できますworker_process

基本的に、Python アプリケーションは nginx リバース プロキシよりもはるかに低速です。したがって、1 つの nginx プロセスで十分です。ただし、一部の nginx オプション (gzip: on;および などgzip_proxied: any) は CPU を消費します。top コマンドの出力を監視します。nginx プロセスが多くの CPU を消費する場合は、worker_process を増やすことができます。

nginx をリバース プロキシとして使用する場合、worker_process は CPU コアの数以下である必要があります。

于 2014-12-17T03:17:02.587 に答える