使用GatewayWorker转发数据时TIME_WAIT飙升太高.

冷丶秋秋秋秋秋

目前的设计思路:使用GatewayWorker开发的一个简单物联网服务端,通过TCP连接硬件,通过WebSocket连接网页端,硬件发送数据到服务端,服务端收到后立即转发网页端。
但是按照这种模式设计,服务端开启后TIME_WAIT数飙升很高,只连接一个设备就达到2万多。设备发送数据频率挺高,大概1秒钟10-20次。
代码如下:
请教各位大佬,这个设计思路是否有问题,应该如何改进。

1727 1 0
1个回答

six

一个onMessage循环调用这么多接口。。。除了发送接口,其它接口感觉没必要去调用

$myUid = Gateway::getUidByClientId($client_id);

这个改成用$_SESSION['uid']记录client_id对应的uid,获取的时候直接用$_SESSION['uid']获取。
截图
改成

$uid_array = [];
foreach($forwords as $v) {
    $uid_array[] = "$v-Uid";
}
Gateway::sendToUid($uid_array, json_encode(...));

也就是说你截图里的代码除了Gateway::sendToUid接口,其它Gateway接口没必要调用。

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