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

workerman/http-client 報錯內(nèi)存溢出

morris

問題描述

http-client 異步客戶端,運行一段時間后、 報錯內(nèi)存溢出

程序代碼

截圖

報錯信息

截圖

操作系統(tǒng)及workerman/webman等框架組件具體版本

這里寫具體的系統(tǒng)環(huán)境相關(guān)信息
webman 版本
截圖
php 版本
截圖
http-client 版本
截圖
curl 擴展版本
截圖

1278 1 3
1個回答

walkor 打賞

看報錯應該是返回的數(shù)據(jù)太大了,有很多并發(fā)請求的話,會占用很大內(nèi)存。
還有不要重復創(chuàng)建Client實例,把asyncHttpClient保存到類的靜態(tài)屬性,然后復用它。
new Client時設(shè)置下max_conn_per_addr,默認128改成例如32減少并發(fā)。

參考手冊 http://wtbis.cn/doc/workerman/components/workerman-http-client.html#Optinons%20%E9%80%89%E9%A1%B9

  • morris 2023-08-30

    好的, 感謝大佬

  • morris 2023-08-31

    發(fā)現(xiàn)有大量的 Connection closed;
    這個是撥號失敗的時候觸發(fā), 還是由于閑置鏈接久了。 三方服務端關(guān)閉了, 但是php這邊保持的連接池沒關(guān)閉導致呢

  • morris 2023-08-31

    線上服務 訪問的是一個host、 兩小時總共請求 2,742,229次。 connction closed 就有 715,058次

  • walkor 2023-08-31

    http-client里連接閑置15秒默認就自動關(guān)閉了,基本不會出現(xiàn)連接閑置久了的問題。
    Connection closed 感覺是帶寬或網(wǎng)路出現(xiàn)瓶頸,接受數(shù)據(jù)大量丟包導致連接斷開。
    兩小時總共請求 2,742,229次,每秒380個請求。
    根據(jù)你之前的報錯看一個請求有1MB+,假設(shè)每個請求響應大小為500KB,粗略估算大概占用帶寬1.4Gb/S,你們看下服務器是否支持這么大的帶寬。

  • morris 2023-08-31

    應該不是寬帶的問題 。 我看了 當時時間段的 阿里云服務器 網(wǎng)絡監(jiān)控數(shù)據(jù) ,最高也才 20Mbit/s

  • morris 2023-08-31

    我們的ecs 寬帶配置是 無限制 ,阿里云 默認是 1G/s

  • morris 2023-08-31

    我感覺還是 撥號失敗的問題, 測試環(huán)境是在國內(nèi), 訪問這個facebook 接口,全是 connectd closed; 我在國內(nèi)測試服上用 wget 測試 , 的確是 訪問不了 。

  • morris 2023-08-31

    另外響應數(shù)據(jù) , 應該就幾kb。 就是一個 像素上報成功與否 的響應

  • walkor 2023-08-31

    帶寬排除的話,那可能是撥號失敗導致

  • morris 2023-08-31

    好的, 感謝大佬。 我抓包看下;
    針對最開始的 oom問題。 我理解是
    由于用了異步請求。 當前請求 調(diào)用facebook 還未處理完成, 當前php進程就會處理別的客戶端鏈接,
    假設(shè)facebook 訪問需要10s,
    也就是說 在這10s內(nèi)。 當前php進程占用內(nèi)存 等于 每個請求(比如1M) * 并發(fā)數(shù) 、(因為調(diào)用facebook還被掛起,也就是函數(shù)生命周期還沒完, 不會銷毀函數(shù)調(diào)用棧 臨時變量等占用的內(nèi)存)
    所以會導致當前php進程oom, 是這樣吧

  • walkor 2023-08-31

年代過于久遠,無法發(fā)表回答
??