swoole常用工具demonster介紹與使用方法
swoole是一款常用的高性能網絡框架,它的異步多進程模型和強大的網絡編程功能,使得它在Web服務、游戲服務等領域有著廣泛的應用。然而,開發人員在使用Swoole過程中常常會遇到一些煩瑣的問題,例如:如何排查Swoole進程故障、如何分析Swoole進程內存占用情況等等。這些問題對于Swoole的高效運行來說非常重要。因此,本文將向大家介紹一款Swoole常用工具——Demonster。
一、什么是Demonster?
Demonster是一款開源的Swoole常用工具,它能夠幫助開發人員排查Swoole進程故障、分析Swoole進程內存占用情況、并監控Swoole進程的狀態等等。Demonster提供了一系列命令行工具和ui界面,讓開發人員可以方便地操作、查看和分析Swoole進程的各種信息。
二、Demonster的安裝
Demonster的安裝非常簡單,只需要使用composer即可。步驟如下:
1.在項目根目錄下創建composer.json文件,添加以下內容:
{ "require": { "yueliangdali/demonster": "dev-master" } }
2.在命令行中運行composer update命令下載并安裝必要的庫和依賴。
3.在nginx或apache等Web服務器上配置一個虛擬主機,并將根目錄指向Demonster項目的public目錄。例如,在nginx服務器上的配置:
server { listen 80; server_name demo.demonster.com; root /var/www/demonster/public; location / { index index.php; if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?$1 last; break; } } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/demonster/public$fastcgi_script_name; include fastcgi_params; } }
4.在Swoole項目中引入Demonster的命名空間和啟動類即可開始使用。例如,在一個websocket服務器中:
<?php require_once __DIR__ . '/vendor/autoload.php';//加載Composer自動生成的autoload.php文件 use yueliangdalidemonsterDemonster; use SwooleWebSocketServer; $server = new Server("127.0.0.1", 9501); $server->set([ 'worker_num' => 2, 'task_worker_num' => 2, 'daemonize' => false, ]); Demonster::start();//啟動Demonster $server->on('open', function (Server $server, $request) { echo "server: handshake success with fd{$request->fd} "; $server->task('hello, task');//觸發一個task任務 }); $server->on('message', function (Server $server, $frame) { echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish} "; $server->push($frame->fd, "this is server"); }); $server->on('close', function ($ser, $fd) { echo "client {$fd} closed "; }); $server->on('task', function ($server, $task_id, $worker_id, $data) { echo "New AsyncTask[id=$task_id]" . PHP_EOL; $server->finish("$data -> OK"); }); $server->on('finish', function ($server, $task_id, $data) { echo "AsyncTask[$task_id] Finish: $data" . PHP_EOL; }); $server->start();
三、Demonster的功能
1.展示服務器的狀態
Demonster提供命令demonster status,可以顯示服務器的狀態,包括:Swoole服務器的死循環是否正在執行、已啟動的Worker進程和Task進程數量、TCP和udp連接數等等。例如:
$ demonster status _____ ____ / ____| / __ | (___ ___ ___ _| | | |_ __ ___ / _ / _ '__| | | | '__| ____) | __/ __/ | | |__| | | |_____/ ___|___|_| ____/|_| Swoole Server Status Swoole version:4.4.17 php version:7.2.24 PHP memory:1.37MB ----------------------------------------- start at:2021-07-05 12:50:12 swoole version:4.4.17 (reactor_num:2, worker_num:2, task_worker_num:2) listen:tcp://0.0.0.0:9501 ---Processes--- master pid: 23291 status: start memory: 1MB ├─worker pid: 23295 status: start memory: 2MB ├─worker pid: 23296 status: start memory: 2MB ├─task pid: 23297 status: start memory: 2MB ├─task pid: 23298 status: start memory: 2MB └─manager pid: 23294 status: start memory: 2MB ---Connect Info--- TCP LiveConnections: 8 Not ESTABConnections: 0 SWNotsTCP TimeWaitConnections: 0 UDPLiveConnections: 0 Lastreloadtime: 2021-07-06 10:35:38 reload: DYNAMIC
2.分析服務器內存使用情況
Demonster提供命令demonster memory,可以顯示Swoole服務器的內存情況,包括:進程數量、PID、內存占用情況等等。該命令還可以傳遞一個-c參數,用于對所有進程的內存占用情況進行統計和排序。例如:
$ demonster memory _____ ____ / ____| / __ | (___ ___ ___ _| | | |_ __ ___ / _ / _ '__| | | | '__| ____) | __/ __/ | | |__| | | |_____/ ___|___|_| ____/|_| Swoole Server Memory Usage Swoole version:4.4.17 php version:7.2.24 PHP memory:1.37MB ------------------------------- Swoole worker process mask memory usage PID POW Used(M) RealUsed(M) Diff(M) 23295 22 3.860 1.426 2.434 23296 22 3.860 1.427 2.433 ------------------------------- Swoole task process mask memory usage PID POW Used(M) RealUsed(M) Diff(M) 23297 22 3.860 1.926 1.934 23298 22 3.860 1.925 1.935 ------------------------------- Swoole manager process mask memory usage PID Used(M) % RealUsed(M) % Diff(M) 23294 1.038M 0.06% 1.124M 0.07% 85.76KB ------------------------------- Total Memory Usage Used(M) RealUsed(M) Total 33MB 13.77MB Avg(each) 3.7MB 1.53MB
3.Demonster UI界面
除了命令行工具外,Demonster還提供了一個UI界面,方便開發人員在Web端對Swoole服務器進行監控和管理。
UI界面的訪問地址為:http://yourhost.com/demonster/index.php(需要根據實際的Web服務器配置進行修改)。打開后可以看到一個簡單的頁面,其中顯示了Swoole服務器的狀態和進程信息,同時提供了進程監控和CPU、內存情況分析等功能。
四、小結
Demonster是一款非常實用的Swoole常用工具,它提供了豐富的功能和簡單易用的操作界面,方便了開發人員在Swoole開發過程中的排錯和監控工作。同時,Demonster是一個開源、高可靠的工具,值得開發人員在Swoole開發中加以嘗試和使用。