webman1.5出现内存泄漏,如何定位

wuxian

webman1.5出现内存泄漏

webman框架运行了有一年,后面不知道从什么时候开始,内存一直在增加,不释放,按照之前walkor提供的方法检测,心跳检测接口都出现内存变化,各位大佬,有什么好的方法可以定位吗
检查内存变化中间件

public function process(Request $request, callable $handler) : Response
    {
        $response = $handler($request);
        $worker = App::worker();
        if (!$worker || $worker->id !== 0) {
            return $response;
        }
        static $memory = 0;

        if ($memory === 0) {
            $memory = memory_get_usage(true);
        }
        $usage = memory_get_usage(true);
        $diff = $usage - $memory;

        $checkLimit = 10 * 1024;
        if ($diff > $checkLimit) {
            $uri = $request->uri();
            $method = $request->method();
            (new FeiShuClient)->send([
                '上次内存' => $memory / 1024 . '(KB)',
                '本次内存' => $usage / 1024 . '(KB)',
                '内存变化' => $diff / 1024 . '(KB)',
                '请求方法' => $method,
                '请求地址' => $uri,
            ], 'fs_token_check');
        }
        $memory = $usage;

        return $response;
    }

心跳接口

public function isHealthy(Request $request)
    {
        return 'okk';
    }

飞书报警
截图

69 2 0
2个回答

walkor 打赏

请求增长到一定程度不再增长不是内存泄露。
50M内存是正常内存占用,没超过100M不用担心。

  • wuxian 6小时前

    增长到300M了,服务器内存都爆了

小吴大大

截图
没有慌过

  • 暂无评论
🔝