国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

搞了次性能優(yōu)化,結(jié)果出乎意料!

0
分享至

大家好,我是程序員魚皮。

之前我?guī)Т蠹易龅? 項(xiàng)目 ,用戶可以在線制作、分享、使用代碼生成器~


這次的系列教程中,我專門用了 4 個(gè)小時(shí)的直播,給大家?guī)砹艘粓鰳O致的 性能優(yōu)化 “盛宴”。

很多同學(xué)由于沒有實(shí)習(xí)或工作經(jīng)歷,可能沒有接觸過性能優(yōu)化,但這卻是能區(qū)分程序員水平的重要技能。

為什么這么說?

舉個(gè)例子:

  • 優(yōu)秀的程序員,能用 1 臺(tái)機(jī)器滿足 10000 個(gè)用戶的使用需求,如果滿足不了,首先想到的是繼續(xù)去優(yōu)化。

  • 而一般的程序員,用 1 臺(tái)機(jī)器可能只能滿足 1000 個(gè)用戶的使用需求,如果滿足不了,就要加機(jī)器、加資源。現(xiàn)實(shí)往往是沒有資源給你加。

怎么區(qū)分一個(gè)程序員有沒有性能優(yōu)化經(jīng)驗(yàn)?zāi)兀?/p>

就先問大家一個(gè)問題吧:一臺(tái)部署了 Tomcat 的服務(wù)器,每秒最多能處理多少個(gè)請(qǐng)求?

下面給大家簡單分享下我直播中的性能優(yōu)化過程,答案也將在最后揭曉。

性能優(yōu)化實(shí)踐

要優(yōu)化的是一個(gè)后端查詢接口,功能是查詢出主頁要展示的分頁數(shù)據(jù)列表,邏輯很簡單,就是數(shù)據(jù)庫分頁查詢而已。

如下圖:


首先我們往數(shù)據(jù)庫里插入 10 萬條數(shù)據(jù),然后打開瀏覽器控制臺(tái),觀察 10 次請(qǐng)求的響應(yīng)耗時(shí),平均是 700 毫秒:


1)首先,我嘗試優(yōu)化了數(shù)據(jù)查詢的 SQL 語句,讓它只查詢需要返回給前端的數(shù)據(jù),減少數(shù)據(jù)量。

優(yōu)化后的接口平均耗時(shí)是 500 多毫秒,大概響應(yīng)時(shí)長縮短了 1 / 4:


使用 JMeter 進(jìn)行壓力測試,每秒啟動(dòng) 1000 個(gè)線程,總共啟動(dòng) 1 萬個(gè)線程發(fā)送請(qǐng)求,在異常率 0% 的前提下,測試結(jié)果得到的 qps 為 20,這顯然不是一個(gè)很好的成績。


2)進(jìn)一步優(yōu)化,使用性能更高的 Redis 分布式緩存。將分頁查詢結(jié)果作為 JSON 字符串寫入緩存,再次查詢的時(shí)候直接讀取就行。

結(jié)果響應(yīng)時(shí)長直接縮短到了平均 20 毫秒!縮短了 25 倍!

第一個(gè)請(qǐng)求是加載緩存的,所以較慢。

有緩存的情況下,壓力測試得到的 qps 是 114.6,提升了 5 倍多!


可見緩存還是猛啊,讀多寫少、更新頻率低、訪問頻率高的數(shù)據(jù),非常適合使用緩存。

還能進(jìn)一步優(yōu)化么?

3)當(dāng)然能!使用比分布式緩存更快的本地緩存,直接從當(dāng)前服務(wù)器內(nèi)存讀取數(shù)據(jù),更快~

用瀏覽器控制臺(tái)測試響應(yīng)時(shí)長,幾乎沒有變化(因?yàn)槲覝y試過程中,Redis 也是本地啟動(dòng)的):


進(jìn)行壓力測試,發(fā)現(xiàn) qps 略有提升,大概 10% 左右吧:


本地緩存按道理來說已經(jīng)是最快的讀取方式了,難道這就已經(jīng)優(yōu)化到極限了么?

當(dāng)然沒有!

4)雖然 I / O 難以繼續(xù)優(yōu)化了,但我們可以優(yōu)化程序的計(jì)算邏輯、節(jié)約 CPU 資源。

比如我修改緩存的數(shù)據(jù)類型,不再寫入 JSON 格式的緩存了,直接用 JDK 原生的序列化方式去保存對(duì)象,這樣讀取的時(shí)候也不需要把 JSON 轉(zhuǎn)為對(duì)象。

優(yōu)化這個(gè)邏輯后,響應(yīng)時(shí)長大幅度減少!平均 8 毫秒左右:


沒想到吧,看似不起眼的 JSON 轉(zhuǎn)換操作,這么影響性能?

壓力測試的結(jié)果更恐怖了,吞吐量接近 16000,直接提升了 100 多倍!


真是不測不知道,一測嚇一跳。

問題來了,還能繼續(xù)優(yōu)化么?

當(dāng)然可以!

5)除了業(yè)務(wù)邏輯層,我們還可以優(yōu)化請(qǐng)求層。比如修改 Tomcat 服務(wù)器的配置,增大工作線程數(shù)和最大線程連接數(shù)。

稍微改 2 行配置,吞吐量就提高了 1 / 5 左右,接近 19000!相比最開始的 qps 20 提升了近千倍!


這。。這次到極限了么?

我怎么知道??!肯定還是需要自己測試這個(gè)極限到底在哪里!

如何測試呢?

6)我們可以編寫一個(gè)沒有任何業(yè)務(wù)邏輯,直接返回 "ok" 字符串的空接口。

每秒啟動(dòng) 10 萬個(gè)線程來測試,得到的 qps 為 36000+,又提高了整整一倍!


ok,沒有任何邏輯的接口 qps 是這個(gè)數(shù),那么你再怎么優(yōu)化業(yè)務(wù)邏輯,性能的極限也不會(huì)超過這個(gè)值。

那么,還有辦法繼續(xù)優(yōu)化么?

當(dāng)然可以!

7)因?yàn)檫@只是 Tomcat 服務(wù)器 + Spring MVC 框架的極限,如果我們用別的技術(shù)呢?


這里我就拋磚引玉,大家感興趣的話,可以找個(gè)項(xiàng)目中的查詢接口、用我上面提到的方法優(yōu)化下。


回到最開始的問題 “一臺(tái)部署了 Tomcat 的服務(wù)器,每秒最多能處理多少個(gè)請(qǐng)求?”

其實(shí)這個(gè)答案是 無解 ,因?yàn)槿鄙倭俗钪匾臏y試條件、測試環(huán)境和測試基準(zhǔn),比如是在幾核幾 G、帶寬多少的機(jī)器上測試呢?不同的測試環(huán)境,測試結(jié)果肯定不同。性能優(yōu)化效果一定要以實(shí)際測試結(jié)果為準(zhǔn),下次遇到這種問題的時(shí)候,別被面試官唬住了哦~

以上就是本期分享,時(shí)間有限文章就只能講這么多了,大家如果對(duì)這個(gè)項(xiàng)目、這次的性能優(yōu)化完整教程感興趣,歡迎 學(xué)習(xí)。

這個(gè)項(xiàng)目視頻教程接近 40 小時(shí),文字教程十幾萬字,我付出了大量的頭發(fā)精力,也保證絕對(duì)是一個(gè)很能打的項(xiàng)目~



點(diǎn)擊下方關(guān)注魚皮,獲取免費(fèi)編程學(xué)習(xí)路線、簡歷模板、面試題解、AI 知識(shí)庫、項(xiàng)目教程、交流群。

一些對(duì)大家有用的資源:
100+ 編程學(xué)習(xí)路線 / 實(shí)戰(zhàn)項(xiàng)目 / 求職指導(dǎo)
100+ 簡歷模板
300+ 企業(yè)面試題庫 mianshiya.com
500+ AI 資源大全
1 對(duì) 1 模擬面試
動(dòng)畫學(xué)算法教程

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
《海賊王》第二季口碑爆棚:爛番茄新鮮度100%開分

《海賊王》第二季口碑爆棚:爛番茄新鮮度100%開分

3DM游戲
2026-03-11 13:22:07
小楊阿姨松口了,若真回不去臺(tái)北,聽老板安排,反正她不喜歡做飯

小楊阿姨松口了,若真回不去臺(tái)北,聽老板安排,反正她不喜歡做飯

小娛樂悠悠
2026-03-13 12:51:19
伊朗警察總長威脅:抗議者敢上街就開槍

伊朗警察總長威脅:抗議者敢上街就開槍

桂系007
2026-03-11 16:18:41
生死時(shí)速72小時(shí),營救伊朗女球員

生死時(shí)速72小時(shí),營救伊朗女球員

家傳編輯部
2026-03-12 11:07:56
CBA最新戰(zhàn)報(bào):遼寧主場力克殘陣山西,北控主場勝天津!

CBA最新戰(zhàn)報(bào):遼寧主場力克殘陣山西,北控主場勝天津!

風(fēng)風(fēng)拒絕焦慮
2026-03-14 03:14:57
中國工商銀行浙江省分行原黨委書記、行長沈榮勤被開除黨籍

中國工商銀行浙江省分行原黨委書記、行長沈榮勤被開除黨籍

環(huán)球網(wǎng)資訊
2026-03-13 17:06:13
見美國突然松綁,澤連斯基急赴歐洲,要拿自家絕活談筆大買賣

見美國突然松綁,澤連斯基急赴歐洲,要拿自家絕活談筆大買賣

我是盲流
2026-03-14 01:30:27
男子網(wǎng)購了一臺(tái)80寸的“小米電視”,安裝寬帶的師傅提醒他買的電視是假的!

男子網(wǎng)購了一臺(tái)80寸的“小米電視”,安裝寬帶的師傅提醒他買的電視是假的!

張曉磊
2025-09-29 11:32:28
女子用洗衣機(jī)洗完的衣服總有尿味,查監(jiān)控發(fā)現(xiàn)弟媳拿壺上廁所后把排泄物倒進(jìn)洗衣機(jī),女子:我們還未分家,去年就倒過好幾回,弟媳稱“對(duì)我們不滿意”

女子用洗衣機(jī)洗完的衣服總有尿味,查監(jiān)控發(fā)現(xiàn)弟媳拿壺上廁所后把排泄物倒進(jìn)洗衣機(jī),女子:我們還未分家,去年就倒過好幾回,弟媳稱“對(duì)我們不滿意”

觀威海
2026-03-13 10:39:15
過氣男頂流淪為酒局“工具人”!全程討好、倒酒賠笑,像一個(gè)商品

過氣男頂流淪為酒局“工具人”!全程討好、倒酒賠笑,像一個(gè)商品

涵豆說娛
2026-01-19 18:16:27
打了十來天,“最高強(qiáng)度”打擊來了

打了十來天,“最高強(qiáng)度”打擊來了

中國新聞周刊
2026-03-11 15:02:08
2026年美加墨世界杯阿根廷最強(qiáng)陣容預(yù)測!奪冠幾乎不可能了?

2026年美加墨世界杯阿根廷最強(qiáng)陣容預(yù)測!奪冠幾乎不可能了?

體壇八點(diǎn)半的那些事兒
2026-03-13 18:50:31
西安不倒翁小姐姐離職:沒嫁入豪門,七年沒拿到編制,壓力太大!

西安不倒翁小姐姐離職:沒嫁入豪門,七年沒拿到編制,壓力太大!

眼光很亮
2026-03-12 19:25:00
沈陽91歲老太太病逝,臨終遺言:我就是國民黨一直在找的軍火大盜

沈陽91歲老太太病逝,臨終遺言:我就是國民黨一直在找的軍火大盜

興趣知識(shí)
2026-03-12 17:18:51
俄媒:伊朗向俄羅斯請(qǐng)求人道主義援助

俄媒:伊朗向俄羅斯請(qǐng)求人道主義援助

參考消息
2026-03-13 14:17:21
15.65萬起!豐田官宣:4月6日,新車正式開售

15.65萬起!豐田官宣:4月6日,新車正式開售

高科技愛好者
2026-03-13 23:01:07
伊朗終于提出一個(gè)停戰(zhàn)條件:就一句話

伊朗終于提出一個(gè)停戰(zhàn)條件:就一句話

新動(dòng)察
2026-03-12 15:41:46
漠河觀測員趙海儒:42萬津貼買招行,持有13年,狂賺近190萬

漠河觀測員趙海儒:42萬津貼買招行,持有13年,狂賺近190萬

真實(shí)人物采訪
2026-03-13 06:15:06
石破茂回應(yīng)中日現(xiàn)狀,不是打得過打不過的問題,而是能不能活下去

石破茂回應(yīng)中日現(xiàn)狀,不是打得過打不過的問題,而是能不能活下去

笑談歷史阿晡
2026-01-14 11:26:05
淪為共享單車的女色虎

淪為共享單車的女色虎

深度報(bào)
2026-03-05 22:39:27
2026-03-14 04:11:00
程序員魚皮 incentive-icons
程序員魚皮
一手科技資訊和編程干貨
62文章數(shù) 64關(guān)注度
往期回顧 全部

科技要聞

龍蝦熱卷到AI硬件 “無腦”硬件或被淘汰

頭條要聞

穆杰塔巴"亮相"沒講話 伊朗學(xué)者:其處境可能非常危險(xiǎn)

頭條要聞

穆杰塔巴"亮相"沒講話 伊朗學(xué)者:其處境可能非常危險(xiǎn)

體育要聞

叕戰(zhàn)奧運(yùn),張雨霏要做回“小將”

娛樂要聞

廣電總局公布演員將用姓氏筆畫定番位

財(cái)經(jīng)要聞

“十五五”規(guī)劃綱要,全文來了!

汽車要聞

置換補(bǔ)貼價(jià)8.68萬 五菱繽果S 525km旗艦款上市

態(tài)度原創(chuàng)

教育
數(shù)碼
本地
手機(jī)
公開課

教育要聞

25年堅(jiān)守,6次進(jìn)化!這所學(xué)校如何通過閱讀拿下省科研特等獎(jiǎng)第一名?

數(shù)碼要聞

惠普被指利用固件封鎖翻新墨盒 違反最新全球可持續(xù)標(biāo)準(zhǔn)

本地新聞

坐標(biāo)北京,過敏季反向遷徒

手機(jī)要聞

OPPO、vivo、一加、華為齊發(fā),折疊屏、小屏旗艦全都有!

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進(jìn)入關(guān)懷版