.NET Core 遷移躺坑記續(xù)集之Win下莫名其妙的超時(shí)
繼上一集里說(shuō)到遇到的各種問(wèn)題并且弄了n個(gè)解決方案之后,特別是對(duì)于問(wèn)題4的解決方案對(duì)于切換了HttpClientFactory
我用了你家netcore 2.1下專門解決之前HttpClient口病已久的靈丹妙藥了,信心滿滿的上線…..然后掛了,該超時(shí)的繼續(xù)超
其中這個(gè)問(wèn)題比較詭異在于超時(shí)的主要集中在兩臺(tái)機(jī)器上(俗稱兩兄弟了)
由于不明真相到底是什么導(dǎo)致的,而且接下來(lái)又要到五一了,為了歡度五一這么一個(gè)偉大艱巨的任務(wù),為了證明遷移core的偉大光榮正確,怎么也要解決掉這個(gè)問(wèn)題
步驟一,先確認(rèn)問(wèn)題的復(fù)現(xiàn)
首先直接放棄在任何測(cè)試環(huán)境復(fù)現(xiàn)的想法,因?yàn)橹霸跍y(cè)試HttpClientFactory的時(shí)候已經(jīng)在測(cè)試環(huán)境里進(jìn)行過(guò)多批次各種場(chǎng)景的壓測(cè),無(wú)論是長(zhǎng)時(shí)低壓,長(zhǎng)時(shí)高壓,短時(shí)高壓都進(jìn)行過(guò)都沒(méi)發(fā)生過(guò)
而且就算是線上也就2臺(tái)機(jī)器有問(wèn)題
所以讓運(yùn)維提供ip,指向到這臺(tái)服務(wù)器后,使用superbenchmarker對(duì)其進(jìn)行壓測(cè)
壓測(cè)中發(fā)現(xiàn)這個(gè)….很穩(wěn)定
穩(wěn)定5分鐘,掛個(gè)2分鐘
綠色線為RPS每秒請(qǐng)求數(shù),紫色是請(qǐng)求響應(yīng)時(shí)間,發(fā)現(xiàn)綠色線穩(wěn)定5分鐘后,會(huì)突然沒(méi)有了(請(qǐng)求卡住了),等個(gè)2分鐘后突然紫色線突然冒個(gè)刺(等待已久的請(qǐng)求終于響應(yīng)了)然后綠色線又起來(lái)了(請(qǐng)求恢復(fù)正常)
步驟二,確認(rèn)超時(shí)的時(shí)候發(fā)生了什么
第二天,開(kāi)好壓測(cè),因?yàn)榇_認(rèn)了每5分鐘后會(huì)超時(shí)2分鐘這個(gè)時(shí)間,等著個(gè)四分鐘左右跑到運(yùn)維那坐著,看下超時(shí)期間到底發(fā)生了什么。
然后我就絕望了。
常規(guī)的比如CPU/內(nèi)存之類一切正常,考慮到HttpClient有過(guò)的歷史缺陷。 也特意關(guān)注過(guò)端口號(hào)之類的,也一切正常。
步驟三,遷移前的Framework怎么沒(méi)有問(wèn)題,是Core的鍋嗎
為了證明這個(gè)事情,準(zhǔn)備了2個(gè)console
一個(gè)Framework下使用靜態(tài)的HttpClient每100ms調(diào)用某外部接口
一個(gè)Core下使用HttpClientFactory也是每100ms調(diào)用某外部接口
這個(gè)結(jié)果讓我絕望的平方
結(jié)果顯示Framework下一切正常,只有Core有問(wèn)題
后續(xù)在補(bǔ)充了幾個(gè)不同姿勢(shì)的Core版本的console來(lái)測(cè)試
包括
1.將SetHandlerLifetime設(shè)置為InfiniteTimeSpan
2.不用HttpClientFactory直接new一個(gè)靜態(tài)HttpClient(和Framework一摸一樣的姿勢(shì))
依然都會(huì)又超時(shí)的問(wèn)題
由于網(wǎng)上google翻了個(gè)遍沒(méi)找到類似的說(shuō)法
此時(shí)的內(nèi)心想法:難道我要開(kāi)歷史的倒車了么(難道只有我有問(wèn)題么?還是說(shuō)我哪里姿勢(shì)有問(wèn)題?別人怎么都好好的?難道別人都是假的?網(wǎng)上吹的那么厲害全都是瞎BB?….各種草泥馬奔騰而過(guò))
柳暗花明,絕望的時(shí)候找下組織吧
然后就在某微信群里發(fā)出求救信號(hào)
最后得到一個(gè)看起來(lái)有點(diǎn)靠譜的方案
(截圖里的內(nèi)容,)
文字版描述:創(chuàng)建HttpClient的時(shí)候設(shè)置UseProxy為false,此值默認(rèn)值是true
然后使用這個(gè)改造后在打包一個(gè)console進(jìn)行測(cè)試,這次結(jié)果終于看到了希望的曙光了
由于根據(jù)之前的規(guī)律每5分鐘之后會(huì)掛2分鐘,能活個(gè)10分鐘基本證明修改有效
跟著這個(gè)將站點(diǎn)都修改了UseProxy=false打包上去,進(jìn)行壓測(cè)
跑了好幾個(gè)小時(shí),目前為止并沒(méi)有發(fā)生再超時(shí)的問(wèn)題了,現(xiàn)在基本實(shí)錘問(wèn)題解決了
最后總結(jié)
無(wú)論你是new一個(gè)靜態(tài)HttpClient還是通過(guò)HttpClientFactory去創(chuàng)建HttpClient,記得要將UseProxy=false(當(dāng)然,除非你要用proxy那就沒(méi)轍)
當(dāng)然,最后有幾個(gè)疑點(diǎn)我也不是太清楚
比如
為什么線上就2臺(tái)機(jī)器恒定有問(wèn)題?
而其他機(jī)器則比較穩(wěn)定(實(shí)際線上服務(wù)器接近30臺(tái))?
為什么是穩(wěn)5分鐘后超時(shí)2分鐘(這個(gè)5和這個(gè)2是哪里設(shè)置的)?
UseProxy在這里又是起到了什么樣的作用?
群里小伙伴給了這么一個(gè)解釋
然而我依然不是太理解T-T
.Net世界真是博大精深…
總結(jié)
以上所述是小編給大家介紹的.NET Core 遷移躺坑記續(xù)集之Win下莫名其妙的超時(shí),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)我們網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
上一篇:.NET開(kāi)發(fā)人員關(guān)于ML.NET的入門學(xué)習(xí)
欄 目:ASP.NET
下一篇:.net core高吞吐遠(yuǎn)程方法如何調(diào)用組件XRPC詳解
本文標(biāo)題:.NET Core 遷移躺坑記續(xù)集之Win下莫名其妙的超時(shí)
本文地址:http://mengdiqiu.com.cn/a1/ASP_NET/10931.html
您可能感興趣的文章
- 01-11如何給asp.net core寫(xiě)個(gè)簡(jiǎn)單的健康檢查
- 01-11淺析.Net Core中Json配置的自動(dòng)更新
- 01-11.net core高吞吐遠(yuǎn)程方法如何調(diào)用組件XRPC詳解
- 01-11.NET開(kāi)發(fā)人員關(guān)于ML.NET的入門學(xué)習(xí)
- 01-11docker部署Asp.net core應(yīng)用的完整步驟
- 01-11.net core webapi jwt 更為清爽的認(rèn)證詳解
- 01-11ASP.NET Core靜態(tài)文件的使用方法
- 01-11.NET Core 3.0之創(chuàng)建基于Consul的Configuration擴(kuò)展組件
- 01-11.net core EF Core調(diào)用存儲(chǔ)過(guò)程的方式
- 01-11asp.net Core3.0區(qū)域與路由配置的方法


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-11vscode extension插件開(kāi)發(fā)詳解
- 01-11VsCode插件開(kāi)發(fā)之插件初步通信的方法
- 01-11如何給asp.net core寫(xiě)個(gè)簡(jiǎn)單的健康檢查
- 01-11.net core高吞吐遠(yuǎn)程方法如何調(diào)用組件
- 01-11淺析.Net Core中Json配置的自動(dòng)更新
- 01-11.NET開(kāi)發(fā)人員關(guān)于ML.NET的入門學(xué)習(xí)
- 01-11.NET Core 遷移躺坑記續(xù)集之Win下莫名其
- 01-11.net core webapi jwt 更為清爽的認(rèn)證詳解
- 01-11docker部署Asp.net core應(yīng)用的完整步驟
- 01-11ASP.NET Core靜態(tài)文件的使用方法
隨機(jī)閱讀
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實(shí)例總結(jié)
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10delphi制作wav文件的方法