{eval=Array;=+count(Array);}

成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

問答專欄Q & A COLUMN

系統(tǒng)架構(gòu)如何進(jìn)行性能優(yōu)化?

senntyousenntyou 回答0 收藏1
收藏問題

4條回答

gaosboy

gaosboy

回答于2022-06-28 14:43

從系統(tǒng)架構(gòu)本身來說,一般系統(tǒng)優(yōu)化主要從三個(gè)方面入手,數(shù)據(jù)持久層、業(yè)務(wù)邏輯層和前端展示層。

數(shù)據(jù)持久層

限制系統(tǒng)性能主要有兩個(gè)方面,一是數(shù)據(jù)庫自身的性能,二是對數(shù)據(jù)庫操作的方式,數(shù)據(jù)庫自身相對簡單,一般通過優(yōu)化配置、采用高可用方案、搭建集群或者使用性能更好的數(shù)據(jù)庫來提升性能;數(shù)據(jù)庫操作主要是數(shù)據(jù)庫讀寫操作,可以通過SQL優(yōu)化的方式來提升讀寫速度,或者通過緩存的方式減低并發(fā)、提升性能。

業(yè)務(wù)邏輯層

代碼層面常見的問題有內(nèi)存泄露、資源泄露、線程死鎖等,主要通過優(yōu)化相關(guān)的代碼和算法來提升性能,使用數(shù)據(jù)庫連接、文件讀取時(shí)及時(shí)關(guān)閉IO流,注意線程死鎖,以及靜態(tài)對象的使用等,降低JVM的內(nèi)存消耗,使用高性能的框架、算法,從代碼層面提升系統(tǒng)性能。

前端展示層

前端主要考慮從代碼和資源角度進(jìn)行優(yōu)化,如優(yōu)化、壓縮JS代碼,優(yōu)化頁面渲染效果,減低渲染頻率,使用異步加載數(shù)據(jù),采用緩存減少服務(wù)器的訪問以及靜態(tài)資源的訪問。

評論0 贊同0
  •  加載中...
Caicloud

Caicloud

回答于2022-06-28 14:43

對于業(yè)務(wù)系統(tǒng)的性能優(yōu)化,我原來系統(tǒng)的談過分析和診斷的思路,今天再談下業(yè)務(wù)系統(tǒng)性能優(yōu)化里面我們常見的一些思考和分析系統(tǒng)性能問題的方法。

上線前的性能測試是否有用?

有時(shí)候大家可能覺得奇怪,為何我們系統(tǒng)再上線前都做了性能測試,為何上線后還是會(huì)出現(xiàn)系統(tǒng)性能問題。那么我們可以考慮下實(shí)際上我們上線前性能測試可能存在的一些無法真實(shí)模擬生產(chǎn)環(huán)境的地方,具體為:

1. 硬件能否完全模擬真實(shí)環(huán)境?最好的性能測試往往是直接在搭建完成的生產(chǎn)環(huán)境進(jìn)行。

2. 數(shù)據(jù)量能否模擬實(shí)際場景?真實(shí)場景往往是多個(gè)業(yè)務(wù)表都已經(jīng)存在大數(shù)據(jù)量的積累而非空表。

3. 并發(fā)能否模擬真實(shí)場景?一個(gè)是并發(fā)需要錄制復(fù)合業(yè)務(wù)場景,一個(gè)是并發(fā)量大時(shí)候需要多臺壓測機(jī)。

而實(shí)際上我們在做性能測試的時(shí)候以上幾個(gè)點(diǎn)都很難真正做到,因此要想完全模擬出生產(chǎn)真實(shí)環(huán)境是相當(dāng)困難的,這也導(dǎo)致了很多性能問題是在真正上線后才發(fā)現(xiàn)。

系統(tǒng)本身水平彈性擴(kuò)展是否完全解決性能問題?

第二個(gè)點(diǎn)也是我們經(jīng)常談的比較多的點(diǎn),就是我們的業(yè)務(wù)系統(tǒng)在進(jìn)行架構(gòu)設(shè)計(jì)的時(shí)候,特別是面對非功能性需求,我們都會(huì)談到系統(tǒng)本身的數(shù)據(jù)庫,中間件都采用了集群技術(shù),能夠做到彈性水平擴(kuò)展。那么這種彈性水平擴(kuò)展能力是否又真正解決了性能問題?

實(shí)際上我們看到對于數(shù)據(jù)庫往往很難真正做到無限的彈性水平擴(kuò)展,即使對于Oracle RAC集群往往也是最多擴(kuò)展到單點(diǎn)的2到3倍性能。對于應(yīng)用集群往往可以做到彈性水平擴(kuò)展,當(dāng)前技術(shù)也比較成熟。

當(dāng)中間件能夠做到完全彈性擴(kuò)展的時(shí)候,實(shí)際上仍然可能存在性能問題,即隨著我們系統(tǒng)的運(yùn)行和業(yè)務(wù)數(shù)據(jù)量的不斷積累增值。實(shí)際上你可以看到往往非并發(fā)狀態(tài)下的單用戶訪問本身就很慢,而不是說并發(fā)上來后滿。因此也是我們常說的要給點(diǎn),即:

單點(diǎn)訪問性能正常的時(shí)候可以擴(kuò)展集群來應(yīng)對大并發(fā)狀態(tài)下的同時(shí)訪問

單點(diǎn)訪問本身性能就有問題的時(shí)候,要優(yōu)先優(yōu)化單節(jié)點(diǎn)訪問性能

業(yè)務(wù)系統(tǒng)性能診斷的分類

對于業(yè)務(wù)系統(tǒng)性能診斷,如果從靜態(tài)角度我們可以考慮從以下三個(gè)方面進(jìn)行分類

  1. 操作系統(tǒng)和存儲層面
  2. 中間件層面(包括了數(shù)據(jù)庫,應(yīng)用服務(wù)器中間件)
  3. 軟件層面(包括了數(shù)據(jù)庫SQL和存儲過程,邏輯層,前端展現(xiàn)層等)

那么一個(gè)業(yè)務(wù)系統(tǒng)應(yīng)用功能出現(xiàn)問題了,我們當(dāng)然也可以從動(dòng)態(tài)層面來看實(shí)際一個(gè)應(yīng)用請求從調(diào)用開始究竟經(jīng)過了哪些代碼和硬件基礎(chǔ)設(shè)施,通過分段方法來定位和查詢問題。

比如我們常見的就是一個(gè)查詢功能如果出現(xiàn)問題了,首先就是找到這個(gè)查詢功能對應(yīng)的SQL語句在后臺查詢是否很慢,如果這個(gè)SQL本身就慢,那么就要優(yōu)化優(yōu)化SQL語句。如果SQL本身快但是查詢慢,那就要看下是否是前端性能問題或者集群問題等。

軟件代碼的問題往往是最不能忽視的一個(gè)性能問題點(diǎn)

對于業(yè)務(wù)系統(tǒng)性能問題,我們經(jīng)常想到的就是要擴(kuò)展數(shù)據(jù)庫的硬件性能,比如擴(kuò)展CPU和內(nèi)存,擴(kuò)展集群,但是實(shí)際上可以看到很多應(yīng)用的性能問題并不是硬件性能導(dǎo)致的,而是由于軟件代碼性能引起的。對于軟件代碼常見的性能問題我在以往的博客文章里面也談過到,比較典型的包括了。

1. 循環(huán)中初始化大的結(jié)構(gòu)對象,數(shù)據(jù)庫連接等

2. 資源不釋放導(dǎo)致的內(nèi)存泄露等

3. 沒有基于場景需求來適度通過緩存等方式提升性能

4. 長周期事務(wù)處理耗費(fèi)資源

5. 處理某一個(gè)業(yè)務(wù)場景或問題的時(shí)候,沒有選擇最優(yōu)的數(shù)據(jù)結(jié)構(gòu)或算法

以上都是常見的一些軟件代碼性能問題點(diǎn),而這些往往需要通過我們進(jìn)行Code Review或代碼評審的方式才能夠發(fā)現(xiàn)出來。因此如果要做全面的性能優(yōu)化,對于軟件代碼的性能問題排查是必須的。

通過IT資源監(jiān)控或APM應(yīng)用工具來發(fā)現(xiàn)性能問題

對于性能問題的發(fā)現(xiàn)一般有兩條路徑,一個(gè)就是通過我們IT資源的監(jiān)控,APM的性能監(jiān)控和預(yù)警來提前發(fā)現(xiàn)性能問題,一個(gè)是通過業(yè)務(wù)用戶在使用過程中的反饋來發(fā)現(xiàn)性能問題。

而隨著DevOps和自動(dòng)化運(yùn)維的思路推進(jìn),我們更加希望是通過APM等工具主動(dòng)監(jiān)控來發(fā)現(xiàn)性能問題,對于APM工具最大的好處就是可以進(jìn)行服務(wù)鏈間和全鏈路的性能分析,方便我們發(fā)現(xiàn)性能問題究竟發(fā)生在哪里。比如我們提交一個(gè)表單很慢,通過APM分析我們很容易發(fā)現(xiàn)究竟是調(diào)用哪個(gè)業(yè)務(wù)服務(wù)慢,或者是處理哪個(gè)SQL語句慢。這樣可以極大的提升我們性能問題分析診斷的效率。

評論0 贊同0
  •  加載中...
2450184176

2450184176

回答于2022-06-28 14:43

面試官:給我講講你的項(xiàng)目是怎么性能優(yōu)化的?

https://mp.weixin.qq.com/s/t_tCxI9b4rmJOye1BiB1oQ

評論0 贊同0
  •  加載中...
sutaking

sutaking

回答于2022-06-28 14:43

很多時(shí)候我們?yōu)榱斯?jié)省開支,會(huì)在ECS自建Mysql數(shù)據(jù)庫或者采用第三方一鍵環(huán)境來運(yùn)行WP數(shù)據(jù)庫,雖然有時(shí)會(huì)出現(xiàn)訪問延遲等問題,但總體而言還是挺合適的一種方式。只不過并不是每個(gè)朋友都具備處理突發(fā)問題的能力,一旦在一個(gè)相對重要的時(shí)刻出現(xiàn)了宕機(jī)等難題,抓狂可能是很多人能做也是唯一能做的事情。因此,從成本和運(yùn)營效率上考慮,推薦大家借助RDS來運(yùn)行站點(diǎn)數(shù)據(jù)庫。

評論0 贊同0
  •  加載中...

最新活動(dòng)

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費(fèi)偷看金額在0.1-10元之間
<