目前的设计思路:使用GatewayWorker开发的一个简单物联网服务端,通过TCP连接硬件,通过WebSocket连接网页端,硬件发送数据到服务端,服务端收到后立即转发网页端。 但是按照这种模式设计,服务端开启后TIME_WAIT数飙升很高,只连接一个设备就达到2万多。设备发送数据频率挺高,大概1秒钟10-20次。 代码如下: 请教各位大佬,这个设计思路是否有问题,应该如何改进。
一个onMessage循环调用这么多接口。。。除了发送接口,其它接口感觉没必要去调用
$myUid = Gateway::getUidByClientId($client_id);
这个改成用$_SESSION['uid']记录client_id对应的uid,获取的时候直接用$_SESSION['uid']获取。 改成
$_SESSION['uid']
$uid_array = []; foreach($forwords as $v) { $uid_array[] = "$v-Uid"; } Gateway::sendToUid($uid_array, json_encode(...));
也就是说你截图里的代码除了Gateway::sendToUid接口,其它Gateway接口没必要调用。
好的 调用过多Gateway接口的话 会影响TIME_WAIT数吗
我测试有些接口会影响 TIME_WAIT,有些不会
@1393:非常感谢,按这样改了之后TIME_WAIT数降下来了
一个onMessage循环调用这么多接口。。。除了发送接口,其它接口感觉没必要去调用
这个改成用
$_SESSION['uid']
记录client_id对应的uid,获取的时候直接用$_SESSION['uid']
获取。改成
也就是说你截图里的代码除了Gateway::sendToUid接口,其它Gateway接口没必要调用。
好的 调用过多Gateway接口的话 会影响TIME_WAIT数吗
我测试有些接口会影响 TIME_WAIT,有些不会
@1393:非常感谢,按这样改了之后TIME_WAIT数降下来了