php-tdengine icon indicating copy to clipboard operation
php-tdengine copied to clipboard

swoole5.0链接taosdata时,swoole日志打印出bug信息

Open lizcao opened this issue 3 years ago • 4 comments

swoole5.0 php8.0.8 安装了tdengine扩展后,根据提供的基本案例

use TDengine\Connection;

// 获取扩展版本号
var_dump(\TDengine\EXTENSION_VERSION);

// 设置客户端选项
\TDengine\setOptions([
    \TDengine\TSDB_OPTION_LOCALE => 'en_US.UTF-8', // 区域
    \TDengine\TSDB_OPTION_CHARSET => 'UTF-8', // 字符集
    \TDengine\TSDB_OPTION_TIMEZONE => 'Asia/Shanghai', // 时区
    \TDengine\TSDB_OPTION_CONFIGDIR => '/etc/taos', // 配置目录
    \TDengine\TSDB_OPTION_SHELL_ACTIVITY_TIMER => 3, // shell 活动定时器
]);

// 获取客户端版本信息
var_dump(\TDengine\CLIENT_VERSION);
var_dump(\TDengine\getClientInfo());

// 以下值都是默认值,不改可以不传
$host = '127.0.0.1';
$port = 6030;
$user = 'root';
$pass = 'taosdata';
$db = null;

// 实例化
$connection = new Connection($host, $port, $user, $pass, $db);
// 连接
$connection->connect();
// 获取连接参数
$connection->getHost();
$connection->getPort();
$connection->getUser();
$connection->getPass();
$connection->getDb();
// 获取服务端信息
$connection->getServerInfo();
// 选择默认数据库
$connection->selectDb('db1');
// 关闭连接
$connection->close();

执行上面的步骤后,提示如下报错:

string(5) "1.0.5"
[2022-09-20 18:21:12 $17574.0]	WARNING	Server::check_worker_exit_status(): worker(pid=17741, id=0) abnormal exit, status=0, signal=11
A bug occurred in Swoole-v5.0.0, please report it.
The Swoole developers probably don't know about it,
and unless you report it, chances are it won't be fixed.
You can read How to report a bug doc before submitting any bug reports:
>> https://github.com/swoole/swoole-src/blob/master/.github/ISSUE.md
Please do not send bug reports in the mailing list or personal letters.
The issue page is also suitable to submit feature requests.

OS: Linux 4.15.0-122-generic #124-Ubuntu SMP Thu Oct 15 13:03:05 UTC 2020 x86_64
GCC_VERSION: 7.5.0
OPENSSL_VERSION: OpenSSL 1.1.1  11 Sep 2018
PHP_VERSION : 8.0.8

请问这是什么原因导致的啊?

lizcao avatar Sep 20 '22 10:09 lizcao

已经在swoole提交issue了 https://github.com/swoole/swoole-src/issues/4833

lizcao avatar Sep 20 '22 10:09 lizcao

TDengine 版本多少?

试试把这个代码保存为 test.php,并执行 php test.php

<?php
use TDengine\Connection;
Co\run(function(){
    // 获取扩展版本号
    var_dump(\TDengine\EXTENSION_VERSION);
    
    // 设置客户端选项
    \TDengine\setOptions([
        \TDengine\TSDB_OPTION_LOCALE => 'en_US.UTF-8', // 区域
        \TDengine\TSDB_OPTION_CHARSET => 'UTF-8', // 字符集
        \TDengine\TSDB_OPTION_TIMEZONE => 'Asia/Shanghai', // 时区
        \TDengine\TSDB_OPTION_CONFIGDIR => '/etc/taos', // 配置目录
        \TDengine\TSDB_OPTION_SHELL_ACTIVITY_TIMER => 3, // shell 活动定时器
    ]);
    
    // 获取客户端版本信息
    var_dump(\TDengine\CLIENT_VERSION);
    var_dump(\TDengine\getClientInfo());
    
    // 以下值都是默认值,不改可以不传
    $host = '127.0.0.1';
    $port = 6030;
    $user = 'root';
    $pass = 'taosdata';
    $db = null;
    
    // 实例化
    $connection = new Connection($host, $port, $user, $pass, $db);
    // 连接
    $connection->connect();
    // 获取连接参数
    $connection->getHost();
    $connection->getPort();
    $connection->getUser();
    $connection->getPass();
    $connection->getDb();
    // 获取服务端信息
    $connection->getServerInfo();
    // 选择默认数据库
    $connection->selectDb('db1');
    // 关闭连接
    $connection->close();
});

还可以用 valgrind 运行后,把 leak.log 上传上来:

USE_ZEND_ALLOC=0 valgrind --leak-check=full --log-file=leak.log php test.php

Yurunsoft avatar Sep 21 '22 01:09 Yurunsoft

请问这个能找到原因吗

lizcao avatar Sep 26 '22 01:09 lizcao

感谢回复,执行命令: USE_ZEND_ALLOC=0 valgrind --leak-check=full --log-file=leak.log /usr/local/php8.0/bin/php taosdata_test.php leak.log文件 leak.log

lizcao avatar Oct 10 '22 05:10 lizcao

目测是 TDengine 内存泄漏,试试新版 TDengine 是否还有问题

Yurunsoft avatar Dec 09 '22 09:12 Yurunsoft