Closed gangchzu closed 4 years ago
查看一下日志文件
查看一下日志文件 连接池为空的时候查看日志文件,日志文件为空
几分钟后看status 就是卡在这里 没有一个连接出现
查看下logs目前下的swoole.log
以及 日期目录下的mysql.log
和 system.log
应该是有错误日志的。
可能是这个原因 2020-04-22 09:54:28 [warning] MySQL server has gone away (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:244)
查看下logs目前下的
swoole.log
以及 日期目录下的mysql.log
和system.log
应该是有错误日志的。 可能是这个原因
2020-04-22 09:54:28 [warning] MySQL server has gone away (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:244)
我把数据库换成aws的rds了也是这样,一段时间不操作,连接就丢了
2020-04-22 15:09:00 [warning] Invalid argument supplied for foreach() (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:186) 2020-04-22 15:09:00 [warning] Invalid argument supplied for foreach() (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:186) 2020-04-22 15:09:04 [warning] Invalid argument supplied for foreach() (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:186) 2020-04-22 15:09:04 [warning] Invalid argument supplied for foreach() (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:186) 2020-04-22 15:09:10 [warning] Invalid argument supplied for foreach() (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:186) 2020-04-22 15:09:10 [warning] Invalid argument supplied for foreach() (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:186) 2020-04-22 15:09:27 [info] Worker started! 2020-04-22 15:19:15 [info] Worker started! 2020-04-22 15:32:58 [warning] Swoole\Coroutine\MySQL::query(): The MySQL connection is not established (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:210) 2020-04-22 15:32:58 [warning] Swoole\Coroutine\MySQL::query(): The MySQL connection is not established (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:207) 2020-04-22 15:32:58 [warning] Swoole\Coroutine\MySQL::recv(): no request (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:222) 2020-04-22 15:32:58 [warning] Swoole\Coroutine\MySQL::recv(): no request (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:222) 2020-04-22 15:33:04 [warning] Swoole\Coroutine\MySQL::query(): The MySQL connection is not established (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:210) 2020-04-22 15:33:04 [warning] Swoole\Coroutine\MySQL::query(): The MySQL connection is not established (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:207) 2020-04-22 15:33:04 [warning] Swoole\Coroutine\MySQL::recv(): no request (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:222) 2020-04-22 15:33:04 [warning] Swoole\Coroutine\MySQL::recv(): no request (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:222) 2020-04-22 15:33:06 [warning] Swoole\Coroutine\MySQL::query(): The MySQL connection is not established (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:210) 2020-04-22 15:33:06 [warning] Swoole\Coroutine\MySQL::query(): The MySQL connection is not established (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:207) 2020-04-22 15:33:06 [warning] Swoole\Coroutine\MySQL::recv(): no request (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:222) 2020-04-22 15:33:06 [warning] Swoole\Coroutine\MySQL::recv(): no request (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:222) 2020-04-22 15:33:14 [warning] Swoole\Coroutine\MySQL::query(): The MySQL connection is not established (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:210) 2020-04-22 15:33:14 [warning] Swoole\Coroutine\MySQL::query(): The MySQL connection is not established (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:207) 2020-04-22 15:33:14 [warning] Swoole\Coroutine\MySQL::recv(): no request (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:222) 2020-04-22 15:33:14 [warning] Swoole\Coroutine\MySQL::recv(): no request (phar:///usr/local/smproxy/SMProxy/src/Command/ServerCommand.php:222) 2020-04-22 15:33:57 [info] Worker started!
奇怪的是我测试本机的数据库连接是不会丢的
从你这条日志信息看来感觉是swoole进程挂掉了,推荐你采用Supervisor
或者Docker
管理试试
swoole 进程没挂 就是连接gone away了 我用ps命令看的
我用命令行登录,一段时间不操作也会gone away,应该就是这个原因,我想问下如果连接池的连接不可用了,smproxy会释放,然后重新创建并补充吗,从现象上看没释放并补充进去
会的,你出现的这个MySQL server has gone away
是由SMProxy状态端发送请求到的SMProxy服务端其实还没有到Mysql就已经连接不上了,很有可能是Swoole服务已经未能正常运行了。并非真正意义上Mysql返回的MySQL server has gone away
。
谢谢,请问下我查看进程显示还是存在的,这个用supervisor也没用的吧,还有我在本机测试没问题,连接外网的数据库就出问题了,这个还是不明白
@gangchzu 你可以尝试使用swoole最新发行版试试,不排除某一个小版本出现这类异常问题
好的 多谢您了!
Describe Your Environment (描述你的环境)
How to Reproduce the Problem? (如何重现问题)
Expected Behavior (预期行为)
连接池连接不应该消失 ...
Actual Behavior (实际行为)
...
More Information (更多信息)
...