workman 在運(yùn)行過(guò)程中,命令行出現(xiàn)死鎖和mysql 請(qǐng)求超時(shí)的情況
1.這個(gè)報(bào)錯(cuò)事心跳超時(shí)報(bào)錯(cuò)
Next Illuminate\Database\QueryException: SQLSTATE[HY000] [2002] Operation timed out (Connection: mysql, SQL: select 1) in /Users/bot/project/ai/vendor/illuminate/database/Connection.php:829
Stack trace:
#0 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(783): Illuminate\Database\Connection->runQueryCallback('select 1', Array, Object(Closure))
#1 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(414): Illuminate\Database\Connection->run('select 1', Array, Object(Closure))
#2 /Users/bot/project/ai/vendor/webman/database/src/DatabaseManager.php(63): Illuminate\Database\Connection->select('select 1')
#3 /Users/bot/project/ai/vendor/workerman/coroutine/src/Pool.php(328): Webman\Database\DatabaseManager->Webman\Database\{closure}(Object(Illuminate\Database\MySqlConnection))
#4 /Users/bot/project/ai/vendor/workerman/coroutine/src/Pool.php(309): Workerman\Coroutine\Pool->trySendHeartbeat(Object(Illuminate\Database\MySqlConnection))
#5 /Users/bot/project/ai/vendor/workerman/coroutine/src/Pool.php(132): Workerman\Coroutine\Pool->checkConnections()
#6 /Users/bot/project/ai/vendor/workerman/workerman/src/Events/Swoole.php(288): Workerman\Coroutine\Pool->Workerman\Coroutine\{closure}()
#7 [internal function]: Workerman\Events\Swoole->Workerman\Events\{closure}()
#8 {main}
2. 這個(gè)報(bào)錯(cuò)是在關(guān)閉workman的時(shí)候出現(xiàn)死鎖,報(bào)錯(cuò)信息也是和心跳有關(guān)。
Workerman[start.php] stopping
===================================================================
[FATAL ERROR]: all coroutines (count: 1) are asleep - deadlock!
===================================================================
[Coroutine-101]
--------------------------------------------------------------------
#0 /Users/bot/project/ai/vendor/illuminate/database/Connectors/MySqlConnector.php(75): PDO->prepare()
#1 /Users/bot/project/ai/vendor/illuminate/database/Connectors/MySqlConnector.php(32): Illuminate\Database\Connectors\MySqlConnector->configureEncoding()
#2 /Users/bot/project/ai/vendor/illuminate/database/Connectors/ConnectionFactory.php(184): Illuminate\Database\Connectors\MySqlConnector->connect()
#3 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}()
#4 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(1339): call_user_func()
#5 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(1375): Illuminate\Database\Connection->getPd
===================================================================
[FATAL ERROR]: all coroutines (count: 1) are asleep - deadlock!
===================================================================
[Coroutine-101]
--------------------------------------------------------------------
#0 /Users/bot/project/ai/vendor/illuminate/database/Connectors/MySqlConnector.php(75): PDO->prepare()
#1 /Users/bot/project/ai/vendor/illuminate/database/Connectors/MySqlConnector.php(32): Illuminate\Database\Connectors\MySqlConnector->configureEncoding()
#2 /Users/bot/project/ai/vendor/illuminate/database/Connectors/ConnectionFactory.php(184): Illuminate\Database\Connectors\MySqlConnector->connect()
#3 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}()
#4 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(1339): call_user_func()
#5 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(1375): Illuminate\Database\Connection->getPdo()
#6 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(528): Illuminate\Database\Connection->getReadPdo()
#7 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(423): Illuminate\Database\Connection->getPdoForSelect()
#8 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(816): Illuminate\Database\Connection->Illuminate\Database\{closure}()
#9 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(983): Illuminate\Database\Connection->runQueryCallback()
#10 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(962): Illuminate\Database\Connection->tryAgainIfCausedByLostConnection()
#11 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(785): Illuminate\Database\Connection->handleQueryException()
#12 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(414): Illuminate\Database\Connection->run()
#13 /Users/bot/project/ai/vendor/webman/database/src/DatabaseManager.php(63): Illuminate\Database\Connection->select()
#14 /Users/bot/project/ai/vendor/workerman/coroutine/src/Pool.php(328): Webman\Database\DatabaseManager->Webman\Database\{closure}()
#15 /Users/bot/project/ai/vendor/workerman/coroutine/src/Pool.php(309): Workerman\Coroutine\Pool->trySendHeartbeat()
#16 /Users/bot/project/ai/vendor/workerman/coroutine/src/Pool.php(132): Workerman\Coroutine\Pool->checkConnections()
#17 /Users/bot/project/ai/vendor/workerman/workerman/src/Events/Swoole.php(288): Workerman\Coroutine\Pool->Workerman\Coroutine\{closure}()
#18 [internal function]: Workerman\Events\Swoole->Workerman\Events\{closure}()
o()
#6 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(528): Illuminate\Database\Connection->getReadPdo()
#7 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(423): Illuminate\Database\Connection->getPdoForSelect()
#8 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(816): Illuminate\Database\Connection->Illuminate\Database\{closure}()
#9 /Users/bot/project/ai/vendor/illuminate/database/Conn
===================================================================
[FATAL ERROR]: all coroutines (count: 1) are asleep - deadlock!
===================================================================
[Coroutine-135]
--------------------------------------------------------------------
#0 /Users/bot/project/ai/vendor/illuminate/database/Connectors/Connector.php(65): PDO->__construct()
#1 /Users/bot/project/ai/vendor/illuminate/database/Connectors/Connector.php(44): Illuminate\Database\Connectors\Connector->createPdoConnection()
#2 /Users/bot/project/ai/vendor/illuminate/database/Connectors/MySqlConnector.php(24): Illuminate\Database\Connectors\Connector->createConnection()
#3 /Users/bot/project/ai/vendor/illuminate/database/Connectors/ConnectionFactory.php(184): Illuminate\Database\Connectors\MySqlConnector->connect()
#4 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}()
#5 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(1339): call_user_func()
#6 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(1375): Illuminate\Database\Connection->getPdo()
#7 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(528): Illuminate\Database\Connection->getReadPdo()
#8 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(423): Illuminate\Database\Connection->getPdoForSelect()
#9 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(816): Illuminate\Database\Connection->Illuminate\Database\{closure}()
#10 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(783): Illuminate\Database\Connection->runQueryCallback()
#11 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(414): Illuminate\Database\Connection->run()
#12 /Users/bot/project/ai/vendor/webman/database/src/DatabaseManager.php(63): Illuminate\Database\Connection->select()
#13 /Users/bot/project/ai/vendor/workerman/coroutine/src/Pool.php(328): Webman\Database\DatabaseManager->Webman\Database\{closure}()
#14 /Users/bot/project/ai/vendor/workerman/coroutine/src/Pool.php(309): Workerman\Coroutine\Pool->trySendHeartbeat()
#15 /Users/bot/project/ai/vendor/workerman/coroutine/src/Pool.php(132): Workerman\Coroutine\Pool->checkConnections()
#16 /Users/bot/project/ai/vendor/workerman/workerman/src/Events/Swoole.php(288): Workerman\Coroutine\Pool->Workerman\Coroutine\{closure}()
#17 [internal function]: Workerman\Events\Swoole->Workerman\Events\{closure}()
ection.php(783): Illuminate\Database\Connection->runQueryCallback()
#10 /Users/bot/project/ai/vendor/illuminate/database/Connection.php(414): Illuminate\Database\Connection->run()
#11 /Users/bot/project/ai/vendor/webman/database/src/DatabaseManager.php(63): Illuminate\Database\Connection->select()
#12 /Users/bot/project/ai/vendor/workerman/coroutine/src/Pool.php(328): Webman\Database\DatabaseManager->Webman\Database\{closure}()
#13 /Users/bot/project/ai/vendor/workerman/coroutine/src/Pool.php(309): Workerman\Coroutine\Pool->trySendHeartbeat()
#14 /Users/bot/project/ai/vendor/workerman/coroutine/src/Pool.php(132): Workerman\Coroutine\Pool->checkConnections()
#15 /Users/bot/project/ai/vendor/workerman/workerman/src/Events/Swoole.php(288): Workerman\Coroutine\Pool->Workerman\Coroutine\{closure}()
#16 [internal function]: Workerman\Events\Swoole->Workerman\Events\{closure}()
前臺(tái)無(wú)相關(guān)報(bào)錯(cuò),就是后臺(tái)出現(xiàn)的報(bào)錯(cuò)。網(wǎng)上看到一種方案,關(guān)閉心跳。想問(wèn)下如何解決?
Workerman/5.1.1 PHP/8.2.28 (Jit off) Darwin/24.3.0
電腦環(huán)境是 mac
你可以嘗試修改數(shù)據(jù)庫(kù)配置
'pool' => [ // 連接池配置,僅支持swoole/swow驅(qū)動(dòng)
'max_connections' => 5, // 最大連接數(shù)
'min_connections' => 1, // 最小連接數(shù)
'wait_timeout' => 3, // 從連接池獲取連接等待的最大時(shí)間,超時(shí)后會(huì)拋出異常
'idle_timeout' => 60, // 連接池中連接最大空閑時(shí)間,超時(shí)后會(huì)關(guān)閉回收,直到連接數(shù)為min_connections
'heartbeat_interval' => 50, // 連接池心跳檢測(cè)時(shí)間,單位秒,建議小于60秒
],