webman中的gatewayworker的bussiness进程内存一直增长

pengzhen

webman里安装了gatewayworker插件,bussiness进程内存一直增加

onWebSocketConnect、onMessage、onClose三个方法里不执行任何代码全部直接return,每次有长连接建立、关闭,用php start.php status查看,都会发现内存在增加

测试连接脚本

$worker = new Worker();

$worker->onWorkerStart = function($worker){
    for( $j = 1; $j<=500; $j++ ){
        $con = new AsyncTcpConnection('ws://192.168.3.53:8282/?token=ddd'.$j);
        $messageCode = 1003;
        // websocket握手成功后
        $con->onWebSocketConnect = function(AsyncTcpConnection $con, ) use ( $messageCode, $j ) {
            $data = [];
            $message = getMsg( $messageCode, $data );
            echo $j.PHP_EOL;
        };
        // 当收到消息时
        $con->onMessage = function( AsyncTcpConnection $con, $data ) use ( $messageCode ) {

        };
        $con ->onError = function( AsyncTcpConnection $con, $code, $msg ){
            echo date( 'H:i:s ' ),$msg,PHP_EOL;
        };
        $con->connect();
    }
};

前后两次status显示的占用内存

php start.php status
716169  58.84M  none                plugin.webman.gateway-worker.game 5           0         3       1321          0      [idle]
php start.php status
703176  58.92M  none                plugin.webman.gateway-worker.game 5           0         3       9             0      [idle]

每次新增加占用的内存很少,但是一直在缓慢增加,这是什么原因,这感觉跟业务代码没有什么关系

104 1 0
1个回答

内存有增长不是什么问题,只要不是无限增长就不是内存泄露,php运行过程中可能会申请内存,包括加载php文件,数据包大小变化等,有些内存不会全部还给操作系统,而是留着复用。

不要简单压测看到内存增长就认为有问题,高强度压测24小时看下是否会爆内存,不爆内存就没事,请求数至少过千万甚至上亿看下看内存。
50M也是很正常的内存占用。

  • 暂无评论
🔝