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网络连接状态截图:
worker03网络连接状态截图:
有些内部api调用是短连接。
按照workerman手册优化好linux内核,timewait连接在2W以下都是正常的
已经按照手册做好了内核优化, sysctl -a 可以看到已经生效了, 但estab 的上限好像是被某个参数限制? 01那台estab最高就是200, 超过200的会在几秒内恢复到200. 03那台最高150. 这个是什么地方限制的? 现在服务器CPU内存使用率很低, 但是添加新的节点能缓解异常问题. 好像还是网络连接这块有一些问题.
框架没有200或150的限制,具体哪里限制的根据根据你的描述无法确定
想起来了,200和150就是BusinessWorker进程数. 如何判断进程数是否够用呢? 按照官网文档"Gateway进程数等于CPU核数,BusinessWorker进程数等于CPU核数的1-3倍." 但我现在BusinessWorker进程数已经是CPU的百倍了.
业务处理速度明显变慢,但是cpu占用不高,一般是进程数不够