Memory leaks 棘轮&x2B;Symfony 3.4-释放内存
我正在尝试为我现有的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
$server = IoServer::factory(
new HttpServer(
new WsServer(
$this->chatManager
)
),
$this->webSocketPort
);
$server->run();
在mychatManager
中,我通过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环境中也可以大大减少内存补偿。