2016-08-26 19 views
1

ユーザが別のポートに接続するのを避けるために、PHP websocketサーバ(ラチェット)を設定し、リバースプロキシとしてNGINXを使用しました。私が1024未満(正確には1020通り)の接続を得るまで、すべてがうまくいっています。その後、他のすべての接続は拒否されます(タイムアウト)。何かが1024のファイル記述子で覆われているように見えますが、何が分かりません。PHP WebSocket ServerとNGINXリバースプロキシのファイル制限

NGINXのproxy_error_logは、アップストリームのクライアントからの応答ヘッダーを読み取っているときに "アップストリームのタイムアウト(110:Connection timed out) : "http://127.0.0.1:8080/socket_server_path/"、ホスト: "domain_name_again"

NGINXユーザーとサーバーを実行しているユーザーの両方で、ファイルの制限が/etc/security/limits.conf(1024以上)に設定されています。プロセスは/ proc/PID#/ limitに上限が設定されています。

https://github.com/ratchetphp/Ratchet/issues/300私の想像どおりのことが記述されていますが、 ation。私は先に進み、とにかく--enable-fd-setsize = 10000でPHPをコンパイルしましたが、それでもそれ以上の接続はできません。

これについてさらに詳しく知り、正確に何が起こっているのか理解するにはどうすればよいですか?私が今直面しなければならないことは、NGINXがタイムアウトしていることです。しかし、PHPがより多くのソケットを開くことができないのか、それともNGINXなのか、まったく違うのか分かりません。

+0

私もこの問題で長い間苦労しました。 PHPの設定では、何も1024に制限されていないことを確認してください。 PHPの限界を上げることによって、私はそれを解決しました。私はあなたが必要とするものを正確に言うことができませんので、もはやその設定を取得することはできません。 – mitchken

答えて

0

私はちょうどダミーだった。 https://bugs.php.net/bug.php?id=69637によると--enable-fd-setsizeはうまく動作しません。

私はシステムヘッダファイルの定数を変更しましたが(私のオリジナルの質問にリンクされているラチェットの問題に言及しています)、私は 'make clean'を実行せずに再コンパイルしていました。下限値)を設定します。

これに関連する私のPHP設定で何も見つかりませんでした。しかし、ヘッダーファイルの定数を変更してもう一度コンパイルした後、1024個を超えることができました。

関連する問題