Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Socks5代理线程_Python_Multithreading_Sockets_Proxy - Fatal编程技术网

Python Socks5代理线程

Python Socks5代理线程,python,multithreading,sockets,proxy,Python,Multithreading,Sockets,Proxy,我们正在开发一个源代码。但我们有个问题。 我们正在使用套接字和线程库。 但当太多用户(约200个连接)将连接到服务器时,我们会出现以下错误: select()中的filedescriptor超出范围 在这方面: try: reader, _, _ = select.select([socket_src, socket_dst], [], [], 1) except select.error as err: error("Select failed", err) 但是cpu使用率

我们正在开发一个源代码。但我们有个问题。 我们正在使用套接字和线程库。 但当太多用户(约200个连接)将连接到服务器时,我们会出现以下错误:

select()中的filedescriptor超出范围

在这方面:

try:
    reader, _, _ = select.select([socket_src, socket_dst], [], [], 1)
except select.error as err:
    error("Select failed", err)
但是cpu使用率只有3%! 服务器容量过大,但此错误导致脚本仍在运行。 解决办法是什么? 我们应该关闭threade?还是另一种解决方案? 谢谢你的帮助。
祝您玩得愉快。

尝试增加操作系统中打开文件描述符的最大数量,例如在Ubuntu中,您可以使用ulimit或更好的prlimit。你可以为你的操作系统找到替代品。这与CPU使用率无关。这是对可在select中使用的最大FD值的硬限制。可能是Python限制,而不是OS限制@GauravDhiman它也与FD限制无关。简短的互联网搜索表明python的
select
有1024个描述符限制。我建议您重写代码以使用其他内容(例如
poll
epoll
)。另外,请确保在不再使用文件描述符时立即关闭它们(垃圾收集描述符无效,因为GC可能不会足够快地销毁它们以跟上客户端连接)。@user207421,我可能遗漏了一些东西,但你能告诉我为什么它与FD限制无关吗?你能给我发送与poll相同的命令吗@高拉夫·迪曼