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';
}
飞书报警
请求增长到一定程度不再增长不是内存泄露。
50M内存是正常内存占用,没超过100M不用担心。
增长到300M了,服务器内存都爆了
没有慌过