開(kāi)啟了10個(gè)進(jìn)程的異步任務(wù),查看狀態(tài)好多都是 N/A N/A N/A N/A N/A [busy]
load average: 0.06, 0.14, 0.08 event-loop:\Workerman\Events\Select
2 workers 11 processes
worker_name exit_status exit_count
TaskWorker 0 0
none 0 0
----------------------------------------------PROCESS STATUS---------------------------------------------------
pid memory listening worker_name connections send_fail timers total_request qps status
20840 N/A text://127.0.0.1:8089 TaskWorker N/A N/A N/A N/A N/A [busy]
20841 N/A text://127.0.0.1:8089 TaskWorker N/A N/A N/A N/A N/A [busy]
20842 N/A text://127.0.0.1:8089 TaskWorker N/A N/A N/A N/A N/A [busy]
20843 5.73M text://127.0.0.1:8089 TaskWorker 1 0 0 8 0 [idle]
20844 N/A text://127.0.0.1:8089 TaskWorker N/A N/A N/A N/A N/A [busy]
20845 N/A text://127.0.0.1:8089 TaskWorker N/A N/A N/A N/A N/A [busy]
20846 5.73M text://127.0.0.1:8089 TaskWorker 1 0 0 8 0 [idle]
20847 N/A text://127.0.0.1:8089 TaskWorker N/A N/A N/A N/A N/A [busy]
20848 N/A text://127.0.0.1:8089 TaskWorker N/A N/A N/A N/A N/A [busy]
20849 N/A text://127.0.0.1:8089 TaskWorker N/A N/A N/A N/A N/A [busy]
20850 4.81M http://127.0.0.1:8088 none 22 0 0 167 0 [idle]
----------------------------------------------PROCESS STATUS---------------------------------------------------
Summary 14M - - 24 0 0 183 0 [Summary]
需要同時(shí)處理多個(gè)慢業(yè)務(wù),用命令行按順序一個(gè)個(gè)執(zhí)行,需要4個(gè)小時(shí)左右,想要減少到2個(gè)小時(shí)內(nèi),1個(gè)小時(shí)更好
服務(wù)器需要什么配置
需要做哪些優(yōu)化
怎么查看業(yè)務(wù)并發(fā)連接數(shù)超過(guò)1000同時(shí)在線,我的服務(wù)器沒(méi)有優(yōu)化內(nèi)核
需要怎么設(shè)置才不會(huì)出現(xiàn)很多N/A 和 busy
問(wèn)答去搜索和看文檔
你的異步任務(wù)是在你的業(yè)務(wù)流程中干嘛用的,類似定時(shí)任務(wù),或者隊(duì)列這種性質(zhì)還是
一個(gè)任務(wù)能執(zhí)行4小時(shí),那你要優(yōu)化這個(gè)任務(wù),和框架無(wú)關(guān)系喔。要優(yōu)化的是你的業(yè)務(wù)流程,碎片化,分片等操作
比如一次任務(wù)是100W數(shù)據(jù),你可以分片成每個(gè)進(jìn)程1W條數(shù)數(shù)據(jù),然后不同的進(jìn)程執(zhí)行不同的批次號(hào)這樣?
比如一次任務(wù)是100W數(shù)據(jù),你可以分片成每個(gè)進(jìn)程1W條數(shù)數(shù)據(jù),然后不同的進(jìn)程執(zhí)行不同的批次號(hào)這樣?
是的,同時(shí)執(zhí)行
只是按順序出列,但是實(shí)際執(zhí)行還是看進(jìn)程的,多進(jìn)程競(jìng)爭(zhēng)這個(gè),幾乎是做到了自動(dòng)分片和異步了。當(dāng)然這是指增量同步的方案
執(zhí)行完后,記錄id,id還是和進(jìn)入隊(duì)列的順序一下的,如果是多進(jìn)程競(jìng)爭(zhēng),記錄的id應(yīng)該是亂序的才對(duì)
正常是按id順序出列和入庫(kù),如果某個(gè)消費(fèi)進(jìn)程有阻塞,這個(gè)id不會(huì)按順序入庫(kù)了。不過(guò)這樣對(duì)你業(yè)務(wù)有什么影響嗎,現(xiàn)在只是要解決你慢的情況呀
按順序出列,這個(gè)好像不重要吧?重要的是N個(gè)進(jìn)程來(lái)消費(fèi)啊,你也可以把你的消息手動(dòng)分片入列,消費(fèi)進(jìn)程在手動(dòng)按類型消費(fèi),達(dá)到手動(dòng)分片目的
進(jìn)程堵塞不影響,經(jīng)常是串行執(zhí)行,還是并行執(zhí)行的會(huì)有影響,比如,設(shè)置了8個(gè)進(jìn)程,是8個(gè)進(jìn)程同時(shí)處理8個(gè)請(qǐng)求呢,還是要等其中的一個(gè)進(jìn)程處理完請(qǐng)求,下一個(gè)進(jìn)程才會(huì)處理請(qǐng)求
N個(gè)進(jìn)程來(lái)消費(fèi),是N個(gè)進(jìn)程都在消費(fèi), 還是需等一個(gè)進(jìn)程消費(fèi)完了,其他進(jìn)程在來(lái)消費(fèi)
http://www.wtbis.cn/doc/workerman/components/workerman-redis-queue.html 這個(gè)不行
只適合設(shè)置一個(gè)進(jìn)程,設(shè)置多個(gè)進(jìn)程,會(huì)有很多數(shù)據(jù)同不了
1.有生產(chǎn)消息嗎?2.沒(méi)有消費(fèi)到嗎?3.消費(fèi)了執(zhí)行有問(wèn)題嗎?你是指的哪個(gè)環(huán)節(jié)
同步邏輯沒(méi)有異常,消費(fèi)也沒(méi)異常
沒(méi)有數(shù)據(jù)進(jìn)入隊(duì)列,每次查看狀態(tài)total_request都會(huì)增加,redis里沒(méi)有數(shù)據(jù),訂閱那里打印也沒(méi)有數(shù)據(jù)
pid memory listening worker_name connections send_fail timers total_request qps status
3534 4.19M none Redis 2 0 3 2176 0 [idle]
3535 4.19M none Redis 2 0 3 2176 0 [idle]
3536 4.19M none Redis 2 0 3 2176 0 [idle]
3537 4.19M none Redis 2 0 3 2176 0 [idle]
3538 4.19M none Redis 2 0 3 2176 0 [idle]
3539 4.19M none Redis 2 0 3 2176 0 [idle]
3540 4.19M none Redis 2 0 3 2176 0 [idle]
3541 4.19M none Redis 2 0 3 2176 0 [idle]
3542 4.19M none Redis 2 0 3 2176 0 [idle]
3543 4.19M none Redis 2 0 3 2176 0 [idle]
3544 4.19M none Redis 2 0 3 2176 0 [idle]
3545 4.19M none Redis 2 0 3 2176 0 [idle]
3546 4.19M none Redis 2 0 3 2176 0 [idle]
3547 4.19M none Redis 2 0 3 2176 0 [idle]
3548 4.19M none Redis 2 0 3 2176 0 [idle]
3549 4.19M none Redis 2 0 3 2176 0 [idle]
3550 4.19M none Redis 2 0 3 2177 0 [idle]
3551 4.19M none Redis 2 0 3 2176 0 [idle]
3552 4.19M none Redis 2 0 3 2176 0 [idle]
3553 4.19M none Redis 2 0 3 2176 0 [idle]
3554 4.19M none Redis 2 0 3 2177 0 [idle]
3555 4.19M none Redis 2 0 3 2177 0 [idle]
3556 4.19M none Redis 2 0 3 2178 0 [idle]
3557 4.19M none Redis 2 0 3 2176 0 [idle]
3558 4.19M none Redis 2 0 3 2176 0 [idle]
3559 4.19M none Redis 2 0 3 2176 0 [idle]
----------------------------------------------PROCESS STATUS---------------------------------------------------
Summary 104M - - 52 0 78 56581 0 [Summary]
pid memory listening worker_name connections send_fail timers total_request qps status
3534 4.19M none Redis 2 0 3 2283 0 [idle]
3535 4.19M none Redis 2 0 3 2283 0 [idle]
3536 4.19M none Redis 2 0 3 2283 0 [idle]
3537 4.19M none Redis 2 0 3 2283 0 [idle]
3538 4.19M none Redis 2 0 3 2283 0 [idle]
3539 4.19M none Redis 2 0 3 2283 0 [idle]
3540 4.19M none Redis 2 0 3 2283 0 [idle]
3541 4.19M none Redis 2 0 3 2283 0 [idle]
3542 4.19M none Redis 2 0 3 2283 0 [idle]
3543 4.19M none Redis 2 0 3 2283 0 [idle]
3544 4.19M none Redis 2 0 3 2283 0 [idle]
3545 4.19M none Redis 2 0 3 2283 0 [idle]
3546 4.19M none Redis 2 0 3 2283 0 [idle]
3547 4.19M none Redis 2 0 3 2283 0 [idle]
3548 4.19M none Redis 2 0 3 2283 0 [idle]
3549 4.19M none Redis 2 0 3 2283 0 [idle]
3550 4.19M none Redis 2 0 3 2284 0 [idle]
3551 4.19M none Redis 2 0 3 2283 0 [idle]
3552 4.19M none Redis 2 0 3 2283 0 [idle]
3553 4.19M none Redis 2 0 3 2283 0 [idle]
3554 4.19M none Redis 2 0 3 2284 0 [idle]
3555 4.19M none Redis 2 0 3 2284 0 [idle]
3556 4.19M none Redis 2 0 3 2285 0 [idle]
3557 4.19M none Redis 2 0 3 2283 0 [idle]
3558 4.19M none Redis 2 0 3 2283 0 [idle]
3559 4.19M none Redis 2 0 3 2283 0 [idle]
----------------------------------------------PROCESS STATUS---------------------------------------------------
Summary 104M - - 52 0 78 59363 0 [Summary]
----------------------------------------------PROCESS STATUS---------------------------------------------------
pid memory listening worker_name connections send_fail timers total_request qps status
3534 4.19M none Redis 2 0 3 2550 0 [idle]
3535 4.19M none Redis 2 0 3 2550 0 [idle]
3536 4.19M none Redis 2 0 3 2550 0 [idle]
3537 4.19M none Redis 2 0 3 2550 0 [idle]
3538 4.19M none Redis 2 0 3 2550 0 [idle]
3539 4.19M none Redis 2 0 3 2550 0 [idle]
3540 4.19M none Redis 2 0 3 2550 0 [idle]
3541 4.19M none Redis 2 0 3 2550 0 [idle]
3542 4.19M none Redis 2 0 3 2550 0 [idle]
3543 4.19M none Redis 2 0 3 2550 0 [idle]
3544 4.19M none Redis 2 0 3 2550 0 [idle]
3545 4.19M none Redis 2 0 3 2550 0 [idle]
3546 4.19M none Redis 2 0 3 2550 0 [idle]
3547 4.19M none Redis 2 0 3 2550 0 [idle]
3548 4.19M none Redis 2 0 3 2550 0 [idle]
3549 4.19M none Redis 2 0 3 2550 0 [idle]
3550 4.19M none Redis 2 0 3 2551 0 [idle]
3551 4.19M none Redis 2 0 3 2550 0 [idle]
3552 4.19M none Redis 2 0 3 2550 0 [idle]
3553 4.19M none Redis 2 0 3 2550 0 [idle]
3554 4.19M none Redis 2 0 3 2551 0 [idle]
3555 4.19M none Redis 2 0 3 2551 0 [idle]
3556 4.19M none Redis 2 0 3 2552 0 [idle]
3557 4.19M none Redis 2 0 3 2550 0 [idle]
3558 4.19M none Redis 2 0 3 2550 0 [idle]
3559 4.19M none Redis 2 0 3 2550 0 [idle]
----------------------------------------------PROCESS STATUS---------------------------------------------------
Summary 104M - - 52 0 78 66305 0 [Summary]
$client->subscribe('async', function($data)use($syncService){
dump($data['id']);
$syncService->syncTgc($data);
});
public function syncTgc($data)
{
Log::info('syncTgc:'.$data['id']);
}
syncTgc第一行就記錄了id