前 言
系統(tǒng)或者軟件性能的重要性自然是無(wú)須多言,永遠(yuǎn)沒(méi)有哪個(gè)用戶(hù)可以忍受打開(kāi)一個(gè)網(wǎng)站或者軟件需要很久才能響應(yīng),性能是評(píng)估一個(gè)系統(tǒng)或者軟件最實(shí)在的指標(biāo),如果一個(gè)網(wǎng)站做得再好看、再漂亮,但是性能上不去,那也只是華而不實(shí)。
筆者在離開(kāi)測(cè)試崗進(jìn)入研發(fā)崗已經(jīng)有好幾個(gè)年頭了,按理說(shuō)不應(yīng)該再去寫(xiě)關(guān)于軟件測(cè)試方面的書(shū),而應(yīng)該更多地去關(guān)注研發(fā)工作,但是筆者在研發(fā)崗位上奮斗了幾年后發(fā)現(xiàn),其實(shí)性能并不應(yīng)該是軟件測(cè)試工程師一個(gè)人的事情,而是一個(gè)涉及非常多IT崗位的共同工作,例如架構(gòu)師、技術(shù)經(jīng)理、研發(fā)工程師、網(wǎng)絡(luò)工程師、運(yùn)維工程師等,他們都應(yīng)該去關(guān)注性能。為什么這么說(shuō)呢?因?yàn)樾阅軠y(cè)試的工作不僅僅是為了完成一項(xiàng)性能測(cè)試任務(wù)來(lái)獲取系統(tǒng)或者軟件的性能指標(biāo),而更多的是要去發(fā)現(xiàn)性能問(wèn)題、去分析診斷性能問(wèn)題、去針對(duì)性能問(wèn)題進(jìn)行調(diào)優(yōu)。某個(gè)性能問(wèn)題可能是由架構(gòu)設(shè)計(jì)缺陷引起的,也有可能是由網(wǎng)絡(luò)布線(xiàn)不足導(dǎo)致的,當(dāng)然也可能是由幾行代碼引發(fā)的,所以這是一個(gè)和很多IT崗位都相關(guān)的工作,是很多IT崗位都需要一起去重視的工作。正因?yàn)樾阅苋绱酥匾怨P者在轉(zhuǎn)崗后還是對(duì)性能念念不忘,從而也就有了這本書(shū)的問(wèn)世,當(dāng)然筆者也希望借助本書(shū)能讓不同IT崗位的“同行”都能更多地去關(guān)注性能問(wèn)題。
這是一本理論和實(shí)踐相結(jié)合的、同時(shí)面向研發(fā)和測(cè)試崗的關(guān)于性能分析診斷調(diào)優(yōu)實(shí)踐的圖書(shū),比起其他的很多性能測(cè)試方面的圖書(shū),本書(shū)的內(nèi)容更側(cè)重于介紹如何去發(fā)現(xiàn)性能問(wèn)題、分析診斷性能問(wèn)題以及對(duì)發(fā)現(xiàn)的性能問(wèn)題進(jìn)行調(diào)優(yōu)。書(shū)中的內(nèi)容涵蓋了性能測(cè)試基礎(chǔ)、Linux和Windows服務(wù)器的性能分析、Web和應(yīng)用中間件的性能分析、Java應(yīng)用程序的性能分析、MySQL數(shù)據(jù)庫(kù)的性能分析、安卓APP的性能分析以及具體的性能分析案例實(shí)踐。這本書(shū)主要是面向有一定性能測(cè)試基礎(chǔ)或者編程語(yǔ)言基礎(chǔ)的朋友,對(duì)于剛剛接觸性能測(cè)試的朋友來(lái)說(shuō)可能會(huì)稍顯吃力,建議在閱讀本書(shū)的同時(shí)可以搭配參考其他的基礎(chǔ)書(shū)籍,這樣學(xué)習(xí)效果會(huì)更好,筆者相信讀完本書(shū)的朋友以后肯定不會(huì)再為“性能問(wèn)題”而發(fā)愁。
特別感謝夏毓彥編輯一直對(duì)我的支持和鼓勵(lì),正是有了清華大學(xué)出版社各位老師的幫助才有了這本關(guān)于性能測(cè)試分析、診斷調(diào)優(yōu)的書(shū),也特別感謝蔣彪等眾多摯友在我最困難的時(shí)候給了我很多的幫助。由于作者水平和時(shí)間的限制,書(shū)中難免會(huì)存在一些錯(cuò)誤和不足之處,還望見(jiàn)諒并幫忙指正,也懇請(qǐng)讀者提出寶貴的意見(jiàn)和建議。
作者于南京
2020年3月