Dolphin在Linux中的网络优化指南
先明确目标与场景
- 若你指的是DolphinScheduler(分布式调度系统),网络优化的重点在:内核网络栈、网卡多队列与卸载、连接队列与服务端并发能力、容器与端口网络连通性。
- 若你指的是Dolphin(文件管理器)或Dolphin-M 无线网桥,前者几乎无网络可调,后者属于设备侧射频与无线参数优化,非Linux主机调优范畴。下文以DolphinScheduler为主,末尾附简要说明。
Linux内核与网卡层优化
- 增大TCP缓冲与启用窗口缩放,提升高带宽/高时延链路吞吐:
- 写入/etc/sysctl.conf并sysctl -p生效:
- net.ipv4.tcp_rmem = 4096 87380 16777216
- net.ipv4.tcp_wmem = 4096 65536 16777216
- net.ipv4.tcp_window_scaling = 1
- 提升连接队列与端口可用性,缓解高并发握手与端口耗尽:
- net.core.somaxconn = 65535
- net.ipv4.tcp_max_syn_backlog = 4096
- net.ipv4.ip_local_port_range = 1024 65535
- 如业务端口冲突,预留端口:net.ipv4.ip_local_reserved_ports = 3306,6000-6100
- 缩短连接回收,降低TIME_WAIT占用(面向短连接/高并发API/调度场景):
- net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_fin_timeout = 30
- 调大接收积压队列,避免突发流量丢包:
- net.core.netdev_max_backlog = 3000
- 可选:多核分发与LRO/GRO配合(按网卡与驱动支持度开启):
- RSS:ethtool -K eth0 rxhash on
- GSO/TSO:ethtool -K eth0 gso on tso on
- 队列与MTU:
- 队列数:ethtool -L eth0 rx 4 tx 4(视队列数与驱动支持)
- MTU:ifconfig eth0 mtu 1500(或按路径MTU探测结果微调)
DolphinScheduler服务端与应用层优化
- 服务端并发与容器端口:
- API端口默认12345,Master 25333,Worker 25334;Docker部署建议自建网络并放通上述端口,避免bridge网络NAT性能与连通性问题。
- Jetty容器与连接:
- 在application.properties中提升并发与超时(示例值,按硬件与压测微调):
- server.jetty.max-connections=20000
- server.jetty.threads.min=50
- server.jetty.threads.max=200
- server.jetty.connection-idle-timeout=30000
- 文件句柄与系统资源:
- limits.conf放宽句柄:* soft nofile 65535;* hard nofile 65535
- sysctl -p && sysctl --system 使内核与limits生效
- 客户端/内部组件连接复用与超时(如HttpClient/Jetty/Netty场景):
- 启用TCP复用与时间窗优化(见上节内核参数)
- 连接池:合理设置最大连接数、每路由连接数与空闲校验(如:最大500、每路由100、空闲校验30秒)
- 如集成ZooKeeper:会话超时建议60000ms、重试3次、间隔1000ms
- 验证与压测建议:
- 使用JMeter等模拟并发,关注平均/95分位时延与错误率,结合监控逐步调参
Docker与容器网络要点
- 使用自定义桥接网络(docker network create dolphin-net)以获得稳定DNS解析与隔离;必要时设置–cpus与–memory限制,避免资源竞争导致OOM或降速。
- 端口放通与服务发现:
- MongoDB 27017、DolphinScheduler API 12345、Master 25333、Worker 25334
- Docker Compose编排时显式声明端口映射与服务依赖,减少首次握手与调度延迟
若你指的是其他Dolphin
- Dolphin(KDE文件管理器):无实质网络可调项,网络性能主要受系统网络栈与协议栈影响。
- Dolphin-M 无线网桥:优化点在AP/网桥侧(如WPA2/AES加密、RTS/CTS阈值、分片长度、信标间隔、发射功率、天线选择等),需登录设备管理界面按现场干扰与覆盖调整。