日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core 迁移躺坑记续集--Win下莫名其妙的超时

發布時間:2023/12/4 asp.net 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core 迁移躺坑记续集--Win下莫名其妙的超时 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

繼上一集.NET Core 遷移躺坑記里說到遇到的各種問題并且弄了n個解決方案之后,特別是對于問題4的解決方案對于切換了HttpClientFactory

我用了你家netcore 2.1下專門解決之前HttpClient口病已久的靈丹妙藥了,信心滿滿的上線…..然后掛了,該超時的繼續超,?

其中這個問題比較詭異在于超時的主要集中在兩臺機器上(俗稱兩兄弟了)

由于不明真相到底是什么導致的,而且接下來又要到五一了,為了歡度五一這么一個偉大艱巨的任務,為了證明遷移core的偉大光榮正確,怎么也要解決掉這個問題

?

步驟一,先確認問題的復現

首先直接放棄在任何測試環境復現的想法,因為之前在測試HttpClientFactory的時候已經在測試環境里進行過多批次各種場景的壓測,無論是長時低壓,長時高壓,短時高壓都進行過都沒發生過

而且就算是線上也就2臺機器有問題

所以讓運維提供ip,指向到這臺服務器后,使用superbenchmarker對其進行壓測

壓測中發現這個….很穩定

穩定5分鐘,掛個2分鐘

?

綠色線為RPS每秒請求數,紫色是請求響應時間,發現綠色線穩定5分鐘后,會突然沒有了(請求卡住了),等個2分鐘后突然紫色線突然冒個刺(等待已久的請求終于響應了)然后綠色線又起來了(請求恢復正常)

?

步驟二,確認超時的時候發生了什么

第二天,開好壓測,因為確認了每5分鐘后會超時2分鐘這個時間,等著個四分鐘左右跑到運維那坐著,看下超時期間到底發生了什么。

然后我就絕望了。

常規的比如CPU/內存之類一切正常,考慮到HttpClient有過的歷史缺陷比如 .NET HttpClient 的缺陷和文檔錯誤讓開發人員倍感沮喪 也特意關注過端口號之類的,也一切正常。

?

步驟三,遷移前的Framework怎么沒有問題,是Core的鍋嗎

為了證明這個事情,準備了2個console

一個Framework下使用靜態的HttpClient每100ms調用某外部接口

一個Core下使用HttpClientFactory也是每100ms調用某外部接口

這個結果讓我絕望的平方

結果顯示Framework下一切正常,只有Core有問題

后續在補充了幾個不同姿勢的Core版本的console來測試

包括

??1.將SetHandlerLifetime設置為InfiniteTimeSpan

? 2.不用HttpClientFactory直接new一個靜態HttpClient(和Framework一摸一樣的姿勢)

依然都會又超時的問題

?

由于網上google翻了個遍沒找到類似的說法

此時的內心想法:難道我要開歷史的倒車了么(難道只有我有問題么?還是說我哪里姿勢有問題?別人怎么都好好的?難道別人都是假的?網上吹的那么厲害全都是瞎BB?….各種草泥馬奔騰而過)

?

柳暗花明,絕望的時候找下組織吧

然后就在某微信群里發出求救信號

最后得到一個看起來有點靠譜的方案

(截圖里的內容,)

?

文字版描述:創建HttpClient的時候設置UseProxy為false,此值默認值是true

?

然后使用這個改造后在打包一個console進行測試,這次結果終于看到了希望的曙光了

?

由于根據之前的規律每5分鐘之后會掛2分鐘,能活個10分鐘基本證明修改有效

?

跟著這個將站點都修改了UseProxy=false打包上去,進行壓測

?

跑了好幾個小時,目前為止并沒有發生再超時的問題了,現在基本實錘問題解決了

?

最后總結

無論你是new一個靜態HttpClient還是通過HttpClientFactory去創建HttpClient,記得要將UseProxy=false(當然,除非你要用proxy那就沒轍)

?

當然,最后有幾個疑點我也不是太清楚

比如

為什么線上就2臺機器恒定有問題?

而其他機器則比較穩定(實際線上服務器接近30臺)?

為什么是穩5分鐘后超時2分鐘(這個5和這個2是哪里設置的)?

UseProxy在這里又是起到了什么樣的作用?

?

群里小伙伴給了這么一個解釋

?

然而我依然不是太理解T-T

.Net世界真是博大精深…

原文地址:https://www.cnblogs.com/leolaw/p/10776451.html

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?


總結

以上是生活随笔為你收集整理的.NET Core 迁移躺坑记续集--Win下莫名其妙的超时的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。