【问题标题】:Limit of connected sockets boost::asio连接套接字的限制 boost::asio
【发布时间】:2013-01-29 00:03:15
【问题描述】:

我有一个问题,我使用 boost::asio 来实现我的服务器侦听器,但是当计数连接的套接字 > 1000-1100 时使用 boost::asio 我有一个错误 - “打开的文件太多”

我该如何解决这个问题?

谢谢!

【问题讨论】:

  • 这可能是特定于平台的(例如,您可能遇到了软限制、硬系统限制,或者只是耗尽了一些资源)。请描述您的平台(操作系统等)

标签: c++ linux boost-asio


【解决方案1】:

这不是 boost::asio 问题。这是操作系统级别的问题。尝试在命令行上执行ulimit -a,您会看到“打开文件”有限制。这是允许进程拥有的文件描述符的数量。它可以更改,但这是您收到错误的原因。

这个堆栈溢出问题“How do I change the number of open files limit in Linux?”讨论了如何更改此限制。简短的回答是,这并不是特别简单。这是一个操作系统级别的配置参数。

【讨论】:

  • 我在客户端遇到了同样的问题。这让我感到惊讶。因为我一次最多只能运行 3 个并发套接字,但是当我尝试创建 3. 套接字时仍然出现“打开文件过多错误”。我检查了限制,它是 1024 个文件。由于这个问题比客户端开始时间晚大约 6 小时开始发生,我怀疑我在完成后实际上并没有破坏套接字 obj。但是当超出范围时不是会自动销毁吗?因为我没有显式调用析构函数。
猜你喜欢
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 2011-10-15
  • 2011-12-05
  • 1970-01-01
  • 2016-09-02
  • 1970-01-01
  • 2023-03-11
相关资源
最近更新 更多