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

3.x 版本 文件上傳時(shí)內(nèi)存泄漏

MakeHui

文件上傳完內(nèi)存沒有得到釋放, 導(dǎo)致一致累計(jì), 最后崩潰自動(dòng)重啟

報(bào)錯(cuò)時(shí)的泄漏點(diǎn)(位置有點(diǎn)飄忽不定,這附近的代碼都有概率報(bào)錯(cuò)):
https://github.com/walkor/Workerman/blob/6614873e22d88f7eb761c39afcaf8301b4084283/Protocols/Http.php#L551

嘗試了手動(dòng)釋放掉$_cache并沒能解決問題

附件為strace信息

2931 2 0
2個(gè)回答

damao

內(nèi)存報(bào)錯(cuò)不一定是內(nèi)存泄漏吧,可能上傳的文件過大超過內(nèi)存限制。還有可能是同一個(gè)進(jìn)程同時(shí)在接收幾個(gè)用戶上傳的文件,所有文件加一起導(dǎo)致內(nèi)存超過限制。

上傳完文件,運(yùn)行 php start.php status 看下內(nèi)存釋放沒。

  • MakeHui 2021-06-10
    1. 上傳文件為 100k; 2. 只有一個(gè)進(jìn)程上傳; 3. 我是通過 top 查看的內(nèi)存變化情況, 每次上傳完(可以上傳成功)內(nèi)存都會(huì)增加, 即便是等待一段時(shí)間內(nèi)存也沒有被回收掉.
MakeHui

找到一個(gè)曲線救國的方法: https://github.com/walkor/Workerman/issues/401#issuecomment-462043161
稍微優(yōu)化了一下重啟策略

Timer::add(5, function() use ($worker){
    $memoryUsage = memory_get_usage(true);
    if (count($worker->connections) !== 0 && $memoryUsage < $this->memoryUsageLimit[1]) {
        return;
    }
    if ($memoryUsage > $this->memoryUsageLimit[0] || static::$requestCount > 10000) {
        static::$requestCount = 0;
        // Restart current process.
        Worker::stopAll();
    }
});

還有一點(diǎn)要注意: 最好是和前端溝通一下請求時(shí)在header中設(shè)置Connection: close, 或者服務(wù)端調(diào)用close()不保持鏈接, 增加觸發(fā)的概率

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??