Gateway与BusinessWorker之间通讯问题.

ub_luo

问题描述

Gateway与BusinessWorker之间通讯不应该是长链接吗? 为什么我的服务器上有大量的close和time_wait网络连接状态? 是因为businessworker进程数不够吗?

两个节点
worker01 4核8G, 启动了Gateway,BusinessWorker,Register.
worker03 2核4G, 启动了Gateway,BusinessWorker.

两节点Gateway ws监听8804, 进程数都是8,内部起始端口是2900.
BusinessWorker进程数不同,01是200个,03是150个.
最前端的负载均衡权重比是 worker01:worker03 = 2:1

版本 Workerman version:3.4.2 PHP version:7.3.33

worker01网络连接状态截图:
worker01

worker03网络连接状态截图:
worker03

699 1 0
1个回答

walkor

有些内部api调用是短连接。
按照workerman手册优化好linux内核,timewait连接在2W以下都是正常的

  • ub_luo 2022-11-28

    已经按照手册做好了内核优化, sysctl -a 可以看到已经生效了, 但estab 的上限好像是被某个参数限制? 01那台estab最高就是200, 超过200的会在几秒内恢复到200. 03那台最高150. 这个是什么地方限制的? 现在服务器CPU内存使用率很低, 但是添加新的节点能缓解异常问题. 好像还是网络连接这块有一些问题.

  • walkor 2022-11-28

    框架没有200或150的限制,具体哪里限制的根据根据你的描述无法确定

  • ub_luo 2022-11-28

    想起来了,200和150就是BusinessWorker进程数. 如何判断进程数是否够用呢? 按照官网文档"Gateway进程数等于CPU核数,BusinessWorker进程数等于CPU核数的1-3倍." 但我现在BusinessWorker进程数已经是CPU的百倍了.

  • walkor 2022-11-28

    业务处理速度明显变慢,但是cpu占用不高,一般是进程数不够

年代过于久远,无法发表回答
🔝