国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

出現(xiàn)大量timers

qq330397652

問(wèn)題描述

這里寫描述
整個(gè)worker項(xiàng)目代碼沒(méi)起一個(gè)timers,但是運(yùn)行一晚上后,php work.php status出現(xiàn)了大量的timers,而且connections也顯示異常,應(yīng)該就1000多玩家,但是連接顯示4000多

截圖

下面是另一個(gè)服務(wù)器的woker進(jìn)程就很正常
截圖

321 1 1
1個(gè)回答

walkor 打賞

查看連接情況

netstat -nt | grep 39002 | grep ESTABLISHED
能看到操作系統(tǒng)39002連接情況。

php start.php connections
能看到workerman統(tǒng)計(jì)的連接情況。

為什么會(huì)有定時(shí)器

使用一些功能或者組件會(huì)啟動(dòng)定時(shí)器,例如使用了AsyncTcpConnection,設(shè)置了reconnect()定時(shí)重連,連接斷開(kāi)后會(huì)產(chǎn)生一個(gè)定時(shí)器,連接成功后刪除定時(shí)器。使用了一些組件或功能可能會(huì)產(chǎn)生定時(shí)器。

給定時(shí)器記錄日志

如果你要記錄哪里使用了定時(shí)器,需要自己記錄日志,
例如 vendor/workerman/workerman/src/Events/Swoole.php 里的

public function delay(float $delay, callable $func, array $args = []): int
{
    file_put_contents('/tmp/timer.log', (new \Exception('delay')) . "\n", FILE_APPEND);
public function repeat(float $interval, callable $func, array $args = []): int
{
    file_put_contents('/tmp/timer.log', (new \Exception('repeat')) . "\n", FILE_APPEND);

websocket業(yè)務(wù)注意事項(xiàng)

websocket業(yè)務(wù),應(yīng)該在服務(wù)端設(shè)置一個(gè)定時(shí)器,定時(shí)清理不活躍連接,例如定時(shí)關(guān)閉60秒不活躍的連接。
前端需要保證至少每隔59秒通訊一次保持連接。
如果沒(méi)有這個(gè)機(jī)制,會(huì)導(dǎo)致服務(wù)端會(huì)積累一些無(wú)效的連接無(wú)法及時(shí)清理,例如手機(jī)用戶關(guān)閉了網(wǎng)絡(luò)、關(guān)機(jī)、網(wǎng)絡(luò)切換、進(jìn)入無(wú)信號(hào)區(qū)域等,這種極端斷網(wǎng)情況服務(wù)端操作系統(tǒng)是無(wú)法及時(shí)感知的,需要定時(shí)通訊感知。

高負(fù)載

如果兩個(gè)服務(wù)器的代碼和用戶量一樣,那么服務(wù)器一本身有點(diǎn)問(wèn)題,它的負(fù)載比服務(wù)器2高很多。
需要用top等命令找出哪些進(jìn)程占用cpu高,是否是workerman進(jìn)程。
如果是workerman進(jìn)程可以用 strace -ttp pid 命令查看進(jìn)程在執(zhí)行哪些系統(tǒng)調(diào)用,導(dǎo)致cpu很高。

找不同

如果你確認(rèn)兩個(gè)服務(wù)器用戶量一樣,代碼運(yùn)行環(huán)境都一樣,那么服務(wù)器一負(fù)載比服務(wù)器二高就一定還是有不同。
你需要找到不同的地方,例如服務(wù)器一多運(yùn)行了一些服務(wù)如mysql等。
例如服務(wù)器一帶寬遇到瓶頸,服務(wù)器內(nèi)核沒(méi)有優(yōu)化等原因。

  • qq330397652 2025-05-17

    websocket業(yè)務(wù)注意事項(xiàng)這里,我使用的是gateway是不是就不需要用定時(shí)任務(wù)去關(guān)閉不活躍連接了,在gate進(jìn)程中有個(gè)心跳判斷并關(guān)閉的

  • walkor 2025-05-17

    這個(gè)不一定,看配置,按照gateway手冊(cè)推薦配置去做可以自動(dòng)踢掉不活躍連接

  • qq330397652 2025-05-17

    我的配置是pingInterval=14, pingNotResponseLimit=1,客戶端每6s會(huì)有一個(gè)心跳,現(xiàn)在的問(wèn)題是,每過(guò)一段時(shí)間,有時(shí)候24小時(shí),有時(shí)候12小時(shí),gateway status 就會(huì)顯示有超過(guò)實(shí)際連接幾倍的連接數(shù),而且本來(lái)每個(gè)進(jìn)程只有3個(gè)timer的會(huì)變成有幾百個(gè)timer,

    1. 連接數(shù)增多是因?yàn)榭蛻舳瞬粩嘀剡B,然后舊連接來(lái)不及釋放嗎?
    2. 定時(shí)任務(wù)這里,我看源碼就ping會(huì)有timers,還有pingBusinessworker會(huì)有
      沒(méi)什么思路,查看busy進(jìn)程,也沒(méi)看到卡在哪來(lái),就是不斷處理各種問(wèn)題,fd也一直在變,沒(méi)有卡在那個(gè)fd
  • walkor 2025-05-17

    原因無(wú)法從截圖或者描述中猜到。
    如果你是gatewayWorker,不要開(kāi)swoole,gatewayWorker不支持協(xié)程。

  • qq330397652 2025-05-17

    后面就關(guān)了swoole了,如果是busineesWorker進(jìn)程一直在不斷重啟,是什么原因?。?重啟一次起一個(gè)timers?

  • walkor 2025-05-17

    重啟會(huì)有日志

??