You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何突破Dart中ServerSocket的1015最大连接数限制?

突破Dart服务器1015最大连接数限制的方案

你遇到的1015连接数上限,并非Dart本身或你的硬件(AMD Ryzen 5500U+8GB内存)的瓶颈,大概率是系统默认的文件描述符限制导致的——Linux系统默认单个进程的软文件描述符限制为1024,每个TCP连接会占用一个文件描述符,所以实际可用连接数会略低于这个值(约1015)。完全可以通过以下步骤突破该限制:

一、调整系统文件描述符限制

1. 临时生效(当前会话)

在终端执行命令,临时提升当前进程的文件描述符上限:

ulimit -n 65535

之后重启你的Dart服务器即可生效,但重启终端后会恢复默认值。

2. 永久生效

编辑系统配置文件,让限制永久生效:

  1. 打开/etc/security/limits.conf,添加以下两行:
* soft nofile 65535
* hard nofile 65535
  1. 打开/etc/sysctl.conf,添加或修改:
fs.file-max = 655350
  1. 执行命令让配置生效:
sysctl -p

重启服务器或重新登录后,限制会永久生效。

二、优化Dart服务配置

  1. 启用多Isolate处理连接:如果你的代码使用HttpServer.bind,可以设置shared: true,让多个Isolate共同处理连接请求,提升并发能力:
final server = await HttpServer.bind(InternetAddress.anyIPv4, 8080, shared: true);
  1. 调整HTTP Keep-Alive设置:闲置的Keep-Alive连接会占用文件描述符,可通过缩短超时时间释放资源:
server.keepAliveTimeout = Duration(seconds: 30);

三、其他注意事项

  • 你的硬件配置(R5 5500U+8GB内存)完全支撑数万级别的并发连接,只要系统配置到位,无需担心硬件瓶颈。
  • 如果使用了反向代理(如Nginx)或防火墙,需同步调整它们的连接数限制,避免成为新的瓶颈。
  • 可使用压测工具(如wrk、ab)验证调整后的连接数上限,确保配置生效。

内容的提问来源于stack exchange,提问作者user15833970

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:03:36