Skip to content

Memory leak #29

Open
Open
@Lelya

Description

@Lelya

Hi! When I worked on this test, I have a problem - memory leak.



require __DIR__.'/../vendor/autoload.php';
$conf = require __DIR__ . '/config/apollo.php';

$loop = React\EventLoop\Factory::create();
$factory = new React\Stomp\Factory($loop);
$client = $factory->createClient($conf);

$client
    ->connect()
    ->then(function ($client) use ($loop) {
        $prevMessageCount = 0;
        $messageCount = 0;
        $loop->addPeriodicTimer(1, function () use (&$i, $client, &$messageCount) {     
        for ($i = 0; $i < 3000; $i++) {
                       $client->send('/queue/migration', 'Hello! This id message number '.$messageCount);
            echo "Posted this message: 'Hello! This id message number'.$messageCount.'\n";  
            $messageCount++;
            $kmem = memory_get_usage(true) / 1024;
            $mem  = memory_get_usage() / 1024;
            echo "Request: $i\n";
            echo "Memory: $mem KiB\n";
            echo "Real Memory: $kmem KiB\n";     
                }
        });
        $loop->addPeriodicTimer(1, function () use (&$prevMessageCount, &$messageCount) {
            $diff = $messageCount - $prevMessageCount;
            echo "Sent this second: $diff\n";
            $prevMessageCount = $messageCount;
        });
    }, function (\Exception $e) {
        echo sprintf("Could not connect: %s\n", $e->getMessage());
    });

$loop->run();

Testing my client with one listener. Different tests. When you send 100 messages per second, there is no memory leak. When posting more than 500 messages per second memory leaks in an arithmetic progression.

How can fix it?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions