Memory leaks 棘轮&x2B;Symfony 3.4-释放内存

Memory leaks 棘轮&x2B;Symfony 3.4-释放内存,memory-leaks,doctrine-orm,ratchet,symfony-3.4,php-7.1,Memory Leaks,Doctrine Orm,Ratchet,Symfony 3.4,Php 7.1,我正在尝试为我现有的Symfony 3.4应用程序实现聊天功能 $server = IoServer::factory( new HttpServer( new WsServer( $this->chatManager ) ), $this->webSocketPort ); $server->run(); 在mychatMan

我正在尝试为我现有的Symfony 3.4应用程序实现聊天功能

   $server = IoServer::factory(
        new HttpServer(
            new WsServer(
                $this->chatManager
            )
        ),
        $this->webSocketPort
    );
    $server->run();
在my
chatManager
中,我通过DQL访问DB。首先,我发现Symfony本身无法分离实体,所以我添加了

$this->em->clear()

在每个方法的末尾,我都使用了实体

现在,以下是我的
chatManager

protected function sendMessage(ConnectionInterface $connection, $message): ConnectionInterface
{
    $context[] = 'chat';

    echo $this->getMemoryUsage() . PHP_EOL;

    return $connection->send(
        $this->serializer->serialize($message, 'json', SerializationContext::create()->setGroups($context))
    );
}

private function getMemoryUsage() {

    return sprintf('[Memory usage (currently) %dKB/ (max) %dKB]', round(memory_get_usage(true) / 1024), memory_get_peak_usage(true) / 1024);
}
我注意到记忆本身并不会释放。它一直在增长,直到它达到某个值,之后我试图通过websocket连接执行的所有请求都会出错

SQLSTATE[HY000]:一般错误:2006年MySQL服务器已经消失


我能做什么?谢谢。

您是否已经找到了内存泄漏的解决方案?遇到同样的问题。@SkaiBoa嗨!好吧,毕竟我意识到问题不是因为内存泄漏,而是因为nginx连接超时。但是你也应该把
em->clear
放在你使用emThx作为答案的地方。我发现,除了clear方法之外,您还可以在不调试的情况下启动命令,即使在prod环境中也可以大大减少内存补偿。