欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何解決寫接口出現(xiàn)的問題

這篇文章主要介紹“如何解決寫接口出現(xiàn)的問題”,在日常操作中,相信很多人在如何解決寫接口出現(xiàn)的問題問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何解決寫接口出現(xiàn)的問題”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

成都創(chuàng)新互聯(lián)公司-成都網(wǎng)站建設(shè)公司,專注網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站營銷推廣,國際域名空間,網(wǎng)絡(luò)空間,網(wǎng)站托管有關(guān)企業(yè)網(wǎng)站制作方案、改版、費用等問題,請聯(lián)系成都創(chuàng)新互聯(lián)公司。

深夜,領(lǐng)導:“你寫的接口有問題!趕緊起床瞧瞧”。Ding!催命軟件一響,你就知道,該 Work 了......

可思來想去,覺得不可能啊。我的代碼,就是一個簡單的 redis 查詢啊,難不成是 Redis 掛了?

同事把證據(jù)全部發(fā)到了群里,是你的接口無疑。一個簡單的 Get 查詢,平均耗時達到了 2 秒。jstack,promethus  的監(jiān)控,把問題全部指向到了你的接口!

登錄 Redis 服務(wù)器,一切正常。該怎么辦?要這么不明不白不清不楚的背個章丘大鐵鍋么?

如何解決寫接口出現(xiàn)的問題

快是原罪

這種情況下,要相信自己的直覺。你的接口又快又好,很可能是木秀于林,鶴立雞群,當了替罪鳥。

在 “某些” "高并發(fā)"環(huán)境下,由于資源未做隔離,在發(fā)生問題的時候,一些日志和工具的表現(xiàn),會有非常強的迷惑性。

發(fā)生問題的,都是速度最快、請求最多的接口,但理論上并不可能。

如何解決寫接口出現(xiàn)的問題

如上圖。這種情況很常見。大多數(shù)請求,通過 Tomcat 線程池的調(diào)度,進行真正的業(yè)務(wù)處理。

當然線程池是不干這種臟活的,它把請求交給資源處理池去處理,比如:

  • 一個數(shù)據(jù)庫連接池,執(zhí)行耗時的統(tǒng)計操作和迅速的查詢操作。

  • 一個 Redis 連接池,執(zhí)行阻塞性的慢查詢和簡單的 GET SET。

  • 一個 Http 連接池(HTTPClient、OkHTTP 等),遠程調(diào)用速度不等的資源。

  • ...

我們平常的編碼中,通常都會共用這樣的資源池。因為它寫起代碼來簡單,不需要動腦。

但如果你的服務(wù)本身,并沒有做好拆分以及隔離,問題就是致命的。比如,你把報表接口和高并發(fā)的 C 端接口放在了一個實例上。

這時候,你就有可能被報表接口給坑了。

一個例子

我們以數(shù)據(jù)庫連接池為例,來說明一下這個過程,先看一下以下基礎(chǔ)信息:

  • Tomcat 的連接池,配置大小為 200 個。

  • MySQL 的連接池,配置大小為 50 個,算是比較大了。

  • 接口 A 需要調(diào)用耗時的查詢,耗時為 5 秒。

  • 接口 B 速度非???,查詢數(shù)據(jù)庫響應(yīng)時間在 200ms 以下。

速度快的 B 接口,請求量是遠遠大于接口 A 的,平常情況下相安無事。

有一天,接口 A 忽然有了大量的查詢,由于它的耗時比較長,迅速把數(shù)據(jù)庫的 50 個連接池給占滿了(接口 B 由于響應(yīng)快,持有時間短,慢慢連接會被 A  吃掉)。

這時候,無論是接口 A,還是接口 B 的請求,都需要等待至少 5 秒鐘,才能獲取下一條數(shù)據(jù)庫連接,業(yè)務(wù)才能正常走下去。

不一小會兒,服務(wù)的狀態(tài)就變成這樣:

  • 數(shù)據(jù)庫連接池 50 個連接,迅速占滿,而且?guī)缀跞宦樵冋紳M。

  • Tomcat 連接池的 200 個連接,迅速被占滿,其中大部分是速度快的接口 B,因為它的請求量大速度快。

  • 所有接口都 Block 在 Tomcat 的線程上。進而造成:哪怕是查詢一個非數(shù)據(jù)庫的請求,也要等待 5 秒左右。

一般在遇到這種問題的時候,我們都傾向于使用 jstack 打印信息堆棧,或者查看一些內(nèi)部的監(jiān)控曲線。

可惜的是,這些信息,大部分都是騙人的,你看到的慢查詢,并不是真正的慢查詢。

如何解決寫接口出現(xiàn)的問題

從上面的分析中,你應(yīng)該很容易看出問題的癥結(jié)所在:未隔離的瓶頸資源引起上游資源的連鎖反應(yīng)。

但在平常的工作中,我不止一次看到有同學對此手忙腳亂。很多證據(jù)都指向了一些又快又好的接口,而這些根本和它們一點關(guān)系都沒有。他們樂呵呵的截圖,@相關(guān)人等,囂張至極。

在遇到這種情況的時候,你可以使用下面的腳本進行初步分析:

$ cat 10271.tdump| grep "waiting to lock " | awk '{print $5}' | sort | uniq -c | sort -k1 -r  26 <0x0000000782e1b590>   18 <0x0000000787b00448>   16 <0x0000000787b38128>   10 <0x0000000787b14558>

上面的例子,我們找到給 0x0000000782e1b590 上鎖的執(zhí)行棧,可以發(fā)現(xiàn)全部是卡在 HttpClient 的讀操作上了。

在實際場景中,可以看下排行比較靠前的幾個鎖地址,找一下共性:

如何解決寫接口出現(xiàn)的問題

而這些顯示信息非常少的堆棧,才是問題的根本原因。

如何解決

增加 Tomcat 連接池的大小,或者增加連接池的大小,并不能解決問題,大概率還會復現(xiàn)。

最好的解決方式,當然是把耗時的服務(wù)和正常的服務(wù)拆分開來,比如時下流行的微服務(wù)。你的服務(wù)查詢慢,自己訪問超時,和我的服務(wù),一丁點兒關(guān)系都沒有。

但是,你的服務(wù)即然能遇到這種問題,就證明你的公司缺乏這種改造的條件。就只能在單體服務(wù)上來做文章。

這種做法,就是隔離:

如何解決寫接口出現(xiàn)的問題

如上圖,我們在同一個工程里,創(chuàng)建了兩個 MySQL 數(shù)據(jù)庫連接池,指向了相同的 MySQL 地址。

使用這種方式,連接池的操作,就能夠相對做到互不影響。但到現(xiàn)在為止,還沒完,因為你的 Tomcat 連接池依然是共享的。

慢查詢相關(guān)的,從連接池中獲取連接的策略,要改一下,不能一直等待,而應(yīng)該采用 FailFast  的方式(獲取連接短時間的超時也是可以的),否則癥狀還是一樣。

時下流行的熔斷概念,也在一定程度上實踐這種隔離性。

到此,關(guān)于“如何解決寫接口出現(xiàn)的問題”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

標題名稱:如何解決寫接口出現(xiàn)的問題
標題網(wǎng)址:http://aaarwkj.com/article18/gghedp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站策劃、小程序開發(fā)網(wǎng)站設(shè)計、微信公眾號電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
亚洲中文字幕激情中午字幕| 午夜草草视频在线观看| 很黄很刺激的视频中文字幕| av资源网大全手机在线观看| 饥渴少妇高潮露脸嗷嗷叫| 青青草国产成人自拍视频在线观看| 国产午夜福利视频合集| 久草免费人妻视频在线| 老司机精品成人免费视频| 人妻中文字幕日韩av| 亚洲国产精品成人女人| 国产精品毛片一区二区三区| 日韩黄色免费在线观看| 亚洲国产成人精品女人| 久久碰国产一区二区三区| 日本中文有码在线观看| 欧美日韩性生活视频在线| 精品人妻一区二区四区| 国产精品亚洲精品日韩在线| 欧洲亚洲精品免费二区| 色婷婷国产精品高潮呻吟| 一区二区三区国产欧美日本| 亚洲男人天堂在线播放| 国产在线高清精品二区| 色吊丝日韩在线观看| 粉嫩av北条麻妃电影| 97视频在线观看免费| 亚洲国际精品女人乱码| 欧美亚洲国语精品一区二区| 久久婷婷欧美激情综合| 国产精品亚洲综合制服日韩| 综合av在线一区天堂| 亚洲国产精品视频自拍| 国内精品一区二区欧美| 久久精品亚洲精品毛片| 欧美日韩亚洲一区二区搜索| 欧美一级免费黄片在线播放| 黄色av福利在线网站| 国产午夜激情自拍视频| 国产手机在线91精品观看| 亚洲一区免费在线视频|