1

Supervisord の問題の回避策は、「1024 個を超えるファイル記述子をサポートする Python をコンパイルする」ことです。

https://github.com/Supervisor/supervisor/issues/26

これを達成するために必要な変更について誰か教えてもらえますか? Python 2.7.2 ソースが抽出され、準備が整いました。

それが重要な場合は、centos 5.6を実行しています。

ありがとう。

更新: ulimit -n は既に 65535 に設定されています。これは、supervisord の起動時に表示される完全なエラーです。

トレースバック (最新の呼び出しが最後): ファイル "/usr/local/bin/supervisord"、8 行目、load_entry_point('supervisor==3.0a10', 'console_scripts', 'supervisord')() ファイル "/usr/local /lib/python2.7/site-packages/supervisor-3.0a10-py2.7.egg/supervisor/supervisord.py"、372 行目、メインの go(options) ファイル"/usr/local/lib/python2.7 /site-packages/supervisor-3.0a10-py2.7.egg/supervisor/supervisord.py"、行 382、go d.main()
ファイル"/usr/local/lib/python2.7/site-packages/ Supervisor-3.0a10-py2.7.egg/supervisor/supervisord.py"、95 行目、メインの self.run()
ファイル"/usr/local/lib/python2.7/site-packages/supervisor-3.0a10- py2.7.egg/supervisor/supervisord.py"、112 行目、実行中の self.runforever()
ファイル「/usr/local/lib/python2.7/site-packages/supervisor-3.0a10-py2.7.egg/supervisor/supervisord.py」、230行目、runforever r、w、x = self.options. select(r, w, x, timeout)
ファイル「/usr/local/lib/python2.7/site-packages/supervisor-3.0a10-py2.7.egg/supervisor/options.py」、1113行目、select return select.select(r, w, x, timeout) ValueError: ファイル記述子が select() の範囲外です

4

1 に答える 1

3

select(2)それは実際には、基礎となるシステム コールの制限です。

マニュアルページから:

An fd_set is a fixed size buffer.  Executing FD_CLR() or FD_SET() with a value of fd 
that  is  negative  or  is equal  to  or  larger  than  FD_SETSIZE will result in 
undefined behavior. 

標準の FD_SETSIZE は 1024 です。

/usr/include/linux/posix_types.h:#define __FD_SETSIZE   1024

したがって、これは Python の問題ではありません。およびシステム コールには、はるかに大きな制限がありますpoll(2)epoll(2)本当に必要なことはselect.epollselect`select.

于 2011-09-07T05:52:47.567 に答える