linux性能分析及調(diào)優(yōu)__cpu
性能瓶頸調(diào)優(yōu)可調(diào)性能參數(shù)
、內(nèi)存性能瓶頸可調(diào)性能參數(shù)(操作系統(tǒng)設(shè)置swap的目的把跨、在寫(xiě)程序時(shí)、如何使自己的內(nèi)存不被換出swap,常駐物理內(nèi)存)编兄、磁盤(pán)I/O可調(diào)性能參數(shù)(如
何判斷磁盤(pán)IO瓶頸,使用iostat -x 1)声登、網(wǎng)絡(luò)可調(diào)性能參數(shù)
第一節(jié):cpu 性能瓶頸
計(jì)算機(jī)中狠鸳,cpu是最重要的一個(gè)子系統(tǒng)揣苏,負(fù)責(zé)所有計(jì)算任務(wù);
基于摩爾定律的發(fā)展件舵,cpu是發(fā)展最快的一個(gè)硬件卸察,所以瓶頸很少出現(xiàn)在cpu上;
我們線(xiàn)上環(huán)境的cpu都是多核的铅祸,并且基于SMP(symmetric multiprocessing)結(jié)構(gòu)的坑质。
通過(guò)觀(guān)察線(xiàn)上機(jī)器cpu使用率會(huì)發(fā)現(xiàn),使用率很低很低临梗,不到5%涡扼; 說(shuō)明我們的資源浪費(fèi)情況多么嚴(yán)重啊夜焦;(但為什么不能一臺(tái)機(jī)器多部署幾個(gè)應(yīng)用呢壳澳,后邊我會(huì)解釋?zhuān)? 我們線(xiàn)上的cpu一個(gè)核支持超級(jí)線(xiàn)程,也就是一個(gè)核上可以并行運(yùn)行幾個(gè)線(xiàn)程)
機(jī)器CPU使用情況監(jiān)控:
1茫经、良好狀態(tài)指標(biāo)
CPU利用率:User Time <= 70%巷波,System Time <= 35%,User Time + System Time <= 70%卸伞。
上下文切換: ? ?與CPU利用率相關(guān)聯(lián)抹镊,如果CPU利用率狀態(tài)良好,大量的上下文切換也是可以接受的荤傲。
可運(yùn)行隊(duì)列:每個(gè)處理器的可運(yùn)行隊(duì)列<=3個(gè)線(xiàn)程垮耳。
2、監(jiān)控工具 ? vmstat
$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r bswpd free buff cache si so bi boin cs us syid wa st
14 0 140 2904316 341912 3952308 0 0 0 460 1106 9593 36 64 1 0 0
17 0 140 2903492 341912 3951780 0 0 0 0 1037 9614 35 65 1 0 0
20 0 140 2902016 341912 3952000 0 0 0 0 1046 9739 35 64 1 0 0
17 0 140 2903904 341912 3951888 0 0 0 76 1044 9879 37 63 0 0 0
16 0 140 2904580 341912 3952108 0 0 0 0 1055 9808 34 65 1 0 0
重要參數(shù):
r遂黍, run queue终佛, 可運(yùn)行隊(duì)列的線(xiàn)程數(shù),這些線(xiàn)程都是可運(yùn)行狀態(tài)雾家,只不過(guò)CPU暫時(shí)不可用铃彰;
一般要求小于CPU*3的數(shù)量。
cat ? /proc/stat ? ? ? ? 可以看到有幾個(gè)CPU芯咧。
b牙捉,被blocked的進(jìn)程數(shù),正在等待IO請(qǐng)求敬飒;
in邪铲,interrupts,被處理過(guò)的中斷數(shù)
cs无拗,context switch带到,系統(tǒng)上正在做上下文切換的數(shù)目
us,用戶(hù)占用CPU的百分比
sys英染,內(nèi)核和中斷占用CPU的百分比
id揽惹,CPU完全空閑的百分比
上例可得:
sy高us低晌纫,以及高頻度的上下文切換(cs),說(shuō)明應(yīng)用程序進(jìn)行了大量的系統(tǒng)調(diào)用永丝;
這臺(tái)4核機(jī)器的r應(yīng)該在12個(gè)以?xún)?nèi),現(xiàn)在r在14個(gè)線(xiàn)程以上箭养,此時(shí)CPU負(fù)荷很重慕嚷。
一般我們認(rèn)為,如果是4核機(jī)器毕泌,r高于8是喝检,應(yīng)該就是負(fù)載很高了。
可調(diào)優(yōu)性能參數(shù):
1撼泛、通過(guò)調(diào)整進(jìn)程優(yōu)先級(jí)調(diào)整: nice 命令來(lái)調(diào)整進(jìn)程優(yōu)先級(jí)別挠说;可調(diào)范圍(-20到 19) 如: renice 5 pid
2、通過(guò)調(diào)整cpu的親和度來(lái)集中處理某一個(gè)中斷類(lèi)型:(比如網(wǎng)卡中斷)
將系統(tǒng)發(fā)出的中斷都綁定在一個(gè)cpu上愿题,這樣其他cpu繼續(xù)執(zhí)行自己正在執(zhí)行的線(xiàn)程损俭,不被中斷打擾,從而較少了線(xiàn)程上下文切換時(shí)間潘酗,增強(qiáng)性能杆兵;
注: cpu親和度的概念: 在多核cpu中,linux操作系統(tǒng)搶占式調(diào)度系統(tǒng)仔夺,按照cpu時(shí)間片/中斷/等不斷調(diào)度進(jìn)程給cpu去執(zhí)行的琐脏;
如果在一個(gè)時(shí)間片調(diào)度線(xiàn)程1在cpu1上運(yùn)行,另外一個(gè)時(shí)間片調(diào)度線(xiàn)程1在cpu2上去運(yùn)行缸兔,這樣會(huì)造成線(xiàn)程執(zhí)行速度慢日裙,性能降低。
為什么呢惰蜜?
我們知道SMP上多核都是共享L1 ,L2 CPU Cache的昂拂。并且各個(gè)核的內(nèi)存空間都是不可共享的,一個(gè)線(xiàn)程如果多次時(shí)間片上在不同的cpu上運(yùn)行蝎抽,會(huì)造成cache的不斷失效和寫(xiě)入政钟,性能會(huì)降低;
而linux的進(jìn)程調(diào)度有個(gè)親和度算法可以將盡量將進(jìn)程每次都調(diào)度到同一個(gè)cpu上處理樟结;
linux調(diào)度時(shí)當(dāng)然也有Loadbalance算法保證進(jìn)程調(diào)度的均勻負(fù)載的养交;
例如:echo 03 > /proc/irq/19/smp-affinity (將中斷類(lèi)型為19的中斷綁定到第三個(gè)cpu上處理)
第二節(jié):內(nèi)存性能瓶頸
首先,linux的內(nèi)存管理是聰明和智能的瓢宦;
linux通過(guò)(virtual memory manage)來(lái)管理內(nèi)存的碎连;對(duì)于大多數(shù)應(yīng)用,linux是不直接寫(xiě)到硬盤(pán)上去的驮履,而是先寫(xiě)到 virtual memory manage 管理的文件系統(tǒng)緩存(也在內(nèi)存中的)里 ,方便應(yīng)用的后續(xù)的讀請(qǐng)求鱼辙;因?yàn)楹痛疟P(pán)的I/O操作是昂貴的廉嚼;linux會(huì)根據(jù)一些算法策略適當(dāng)?shù)臅r(shí)候同步到硬盤(pán)的;這就是為什么我們運(yùn)行l(wèi)inux一段時(shí)間后倒戏,發(fā)現(xiàn)可用內(nèi)存那么少的原因怠噪,多數(shù)被cache+buffer占用咧;
所以我們提高性能的辦法就是減少寫(xiě)到磁盤(pán)的次數(shù)杜跷,提高每次寫(xiě)磁盤(pán)時(shí)的效率質(zhì)量傍念;
機(jī)器內(nèi)存使用情況監(jiān)控:
1、良好狀態(tài)指標(biāo)
swap in (si) == 0葛闷,swap out (so) == 0
應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存 <= 70%
2憋槐、監(jiān)控工具 ? ?vmstat
$ vmstat ?1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r bswpd free buff cache si sobi bo in cs us sy id wa st
0 3 252696 2432 268 7148 3604 2368 3608 2372 288 288 0 0 21 78 1
0 2 253484 2216 228 7104 5368 2976 5372 3036 930 519 0 0 0 100 0
0 1 259252 2616 128 6148 19784 18712 19784 18712 3821 1853 0 1 3 95 1
1 2 260008 2188 144 6824 11824 2584 12664 2584 1347 1174 14 0 0 86 0
2 1 262140 2964 128 5852 24912 17304 24952 17304 4737 2341 86 10 0 0 4
重要參數(shù):
swpd,已使用的 SWAP 空間大小淑趾,KB 為單位阳仔;
free, ? ? ?可用的物理內(nèi)存大小扣泊,KB 為單位近范;
buff,物理內(nèi)存用來(lái)緩存讀寫(xiě)操作的buffer大小延蟹,KB 為單位顺又;
cache,物理內(nèi)存用來(lái)緩存進(jìn)程地址空間的 cache 大小等孵,KB 為單位稚照;
si, ? ? ? ? ?數(shù)據(jù)從 SWAP 讀取到 RAM(swap in)的大小俯萌,KB 為單位果录;
so, ? ? ? ? 數(shù)據(jù)從 RAM 寫(xiě)到 SWAP(swap out)的大小咐熙,KB 為單位弱恒。
上例可得:
物理可用內(nèi)存 free 基本沒(méi)什么顯著變化,swapd逐步增加棋恼,說(shuō)明最小可用的內(nèi)存始終保持在 256MB(物理內(nèi)存大小) * 10% = 2.56MB 左右返弹,當(dāng)臟頁(yè)達(dá)到10%的時(shí)候就開(kāi)始大量使用swap。
這個(gè)10%來(lái)自" /proc/sys/vm/dirty_background_ratio "爪飘。
可調(diào)優(yōu)性能參數(shù):
1.义起、通過(guò)調(diào)節(jié)緩存的臟數(shù)據(jù)同步到硬盤(pán)的策略:(臟數(shù)據(jù)表示沒(méi)有被當(dāng)前的線(xiàn)程使用的數(shù)據(jù))
例如: echo 10 > /proc/sys/vm/dirty_background_ratio ?(當(dāng)臟數(shù)據(jù)占據(jù)物理內(nèi)存10%時(shí),觸發(fā)pdflush同步到硬盤(pán)):
小心調(diào)節(jié)师崎,會(huì)大幅度的影響性能默终;
echo 2000 > /proc/sys/vm/dirty_expire_centisecs ? ? ? ? ? ?(當(dāng)臟數(shù)據(jù)在物理內(nèi)存的逗留時(shí)間超過(guò)2000ms時(shí)被同步到硬盤(pán));
2、通過(guò)調(diào)節(jié)swap參數(shù)齐蔽,來(lái)優(yōu)化linux虛擬內(nèi)存管理:基于程序的局部性原理两疚,linux通過(guò)虛擬內(nèi)存機(jī)制來(lái)實(shí)現(xiàn)并發(fā)運(yùn)行進(jìn)程,linux發(fā)現(xiàn)物理內(nèi)存不夠用時(shí)含滴,會(huì)根據(jù)LRU算法將一部分內(nèi)存swap out到硬盤(pán)诱渤;當(dāng)運(yùn)行被換出的那個(gè)線(xiàn)程時(shí),在swap in 到內(nèi)存里谈况;
例如: echo 10 > /proc/sys/vm/swappiness (值為0表示盡量都用物理內(nèi)存源哩,值為100表示積極的使用swap分區(qū);)這個(gè)參數(shù)很重要鸦做;小心調(diào)節(jié); 一般為60; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?##在緊急處理線(xiàn)上問(wèn)題時(shí)谓着,可以緊急使用一下泼诱。
更多的參數(shù):
一、操作系統(tǒng)設(shè)置swap的目的
程序運(yùn)行的一個(gè)必要條件就是足夠的內(nèi)存赊锚,而內(nèi)存往往是系統(tǒng)里面比較緊張的一種資源治筒。為了滿(mǎn)足更多程序的要求,操作系統(tǒng)虛擬了一部分內(nèi)存地址舷蒲,并將之映射到swap上耸袜。對(duì)于程序來(lái)說(shuō),它只知道操作系統(tǒng)給自己分配了內(nèi)存地址牲平,但并不清楚這些內(nèi)存地址到底映射到物理內(nèi)存還是swap堤框。物理內(nèi)存和swap在功能上是一樣的,只是因?yàn)槲锢泶鎯?chǔ)元件的不同(內(nèi)存和磁盤(pán))纵柿,性能上有很大的差別蜈抓。操作系統(tǒng)會(huì)根據(jù)程序使用內(nèi)存的特點(diǎn)進(jìn)行換入和換出,盡可能地把物理內(nèi)存留給最需要它的程序昂儒。但是這種調(diào)度是按照預(yù)先設(shè)定的某種規(guī)則的沟使,并不能完全符合程序的需要。
一些特殊的程序(比如MySQL)希望自己的數(shù)據(jù)永遠(yuǎn)寄存在物理內(nèi)存里渊跋,以便提供更高的性能腊嗡。于是操作系統(tǒng)就設(shè)置了幾個(gè)api,以便為調(diào)用者提供“特殊服務(wù)”拾酝。
二燕少、Linux提供的幾個(gè)api
1、mlockall()和munlockall()
這一對(duì)函數(shù)蒿囤,可以讓調(diào)用者的地址空間常駐物理內(nèi)存棺亭,也可以在需要的時(shí)候?qū)⒋颂貦?quán)取消。mlockall()的flag位可以是MCL_CURRENT和MCL_FUTURE的任意組合,分別代表了“保持已分配的地址空間常駐物理內(nèi)存”和“保持未來(lái)分配的地址空間常駐物理內(nèi)存”镶摘。對(duì)于Linux來(lái)說(shuō)嗽桩,這對(duì)函數(shù)是非常霸道的,只有root用戶(hù)才有權(quán)限調(diào)用凄敢。
2碌冶、shmget()和shmat()
這一對(duì)函數(shù),可以向操作系統(tǒng)申請(qǐng)使用大頁(yè)內(nèi)存(Large Page)涝缝。大頁(yè)內(nèi)存的特點(diǎn)是預(yù)分配和永駐物理內(nèi)存扑庞,因?yàn)槭褂昧斯蚕韮?nèi)存段的方式,page table有可能會(huì)比傳統(tǒng)的小頁(yè)分配方式更小拒逮。
對(duì)于多進(jìn)程共享內(nèi)存的程序(比如ORACLE)罐氨,大頁(yè)內(nèi)存能夠節(jié)省很多page table開(kāi)銷(xiāo);
而對(duì)于MySQL來(lái)說(shuō)滩援,性能和資源開(kāi)銷(xiāo)都沒(méi)有顯著變化栅隐,好處就在于減少了內(nèi)存地址被映射到swap上的可能。至于為什么是減少玩徊,而不是完全避免租悄,之后再講解。
3恩袱、O_DIRECT和posix_memalign()
以上兩個(gè)方法都不會(huì)減少內(nèi)存的使用量泣棋,調(diào)用者的本意是獲取更高的系統(tǒng)特權(quán),而不是節(jié)約系統(tǒng)資源畔塔。
O_DIRECT是一種更加理想化的方式潭辈,通過(guò)避免double buffer,節(jié)省了文件系統(tǒng)cache的開(kāi)銷(xiāo)澈吨,最終減少swap的使用率萎胰。O_DIRECT是Linux ?IO調(diào)度相關(guān)的標(biāo)志,在open函數(shù)里面調(diào)用棚辽。通過(guò)O_DIRECT標(biāo)志打開(kāi)的文件技竟,讀寫(xiě)都不會(huì)用到文件系統(tǒng)的cache。
傳統(tǒng)的數(shù)據(jù)庫(kù)(ORACLE屈藐、MySQL)基本都有O_DIRECT相關(guān)的開(kāi)關(guān)榔组,在提高性能的同時(shí),也減少了內(nèi)存的使用联逻。至于posix_memalign()搓扯,是用來(lái)申請(qǐng)對(duì)齊的內(nèi)存地址的。只有用posix_memalign()申請(qǐng)的內(nèi)存地址包归,才能用來(lái)讀寫(xiě)O_DIRECT模式下的文件描述符锨推。
4、madvise()和fadvise()
這對(duì)函數(shù)也是比較溫和的,可以將調(diào)用者對(duì)數(shù)據(jù)訪(fǎng)問(wèn)模式的預(yù)期傳遞給Linux换可,以期得到更好的性能椎椰。
我們比較感興趣的是MADV_DONTNEED和FADV_NOREUSE這兩個(gè)flag。前者會(huì)建議Linux釋放指定的內(nèi)存區(qū)域沾鳄,而后者會(huì)建議文件系統(tǒng)釋放指定文件所占用的cache慨飘。
當(dāng)mysql出現(xiàn)內(nèi)存導(dǎo)致的性能瓶頸時(shí),可以:
1译荞、/proc/sys/vm/swappiness的內(nèi)容改成0(臨時(shí))瓤的,/etc/sysctl.conf上添加vm.swappiness=0(永久)
這個(gè)參數(shù)決定了Linux是傾向于使用swap,還是傾向于釋放文件系統(tǒng)cache吞歼。在內(nèi)存緊張的情況下圈膏,數(shù)值越低越傾向于釋放文件系統(tǒng)cache。當(dāng)然篙骡,這個(gè)參數(shù)只能減少使用swap的概率稽坤,并不能避免Linux使用swap。
2医增、修改MySQL的配置參數(shù)innodb_flush_method,開(kāi)啟O_DIRECT模式老虫。
這種情況下叶骨,InnoDB的buffer pool會(huì)直接繞過(guò)文件系統(tǒng)cache來(lái)訪(fǎng)問(wèn)磁盤(pán),但是redo log依舊會(huì)使用文件系統(tǒng)cache祈匙。值得注意的是忽刽,Redo log是覆寫(xiě)模式的,即使使用了文件系統(tǒng)的cache夺欲,也不會(huì)占用太多跪帝。
3、添加MySQL的配置參數(shù)memlock
這個(gè)參數(shù)會(huì)強(qiáng)迫mysqld進(jìn)程的地址空間一直被鎖定在物理內(nèi)存上些阅,對(duì)于os來(lái)說(shuō)是非常霸道的一個(gè)要求伞剑。必須要用root帳號(hào)來(lái)啟動(dòng)MySQL才能生效。
4市埋、還有一個(gè)比較復(fù)雜的方法黎泣,指定MySQL使用大頁(yè)內(nèi)存(Large
Page)。Linux上的大頁(yè)內(nèi)存是不會(huì)被換出物理內(nèi)存的缤谎,和memlock有異曲同工之妙抒倚。具體的配置方法可以參
考:http://harrison-fisk.blogspot.com/2009/01/enabling-innodb-large-pages-
on-linux.html
第三節(jié): 磁盤(pán)I/O可調(diào)性能參數(shù)
linux的子系統(tǒng)VFS(virtural file system)虛擬文件系統(tǒng);從高層將各種文件系統(tǒng)坷澡,以及底層磁盤(pán)特性隱藏托呕,對(duì)程序員提供:read,write,delete等文件操作;這就是之所以我們可以在linux上mount多種不同格式的文件系統(tǒng)的,而window確不行项郊;
當(dāng)然基于:虛擬文件系統(tǒng)馅扣,文件系統(tǒng),文件系統(tǒng)驅(qū)動(dòng)程序呆抑,硬件特性方面岂嗓,都能找到性能瓶頸;
1鹊碍、選擇適合應(yīng)用的文件系統(tǒng);
2.厌殉、調(diào)整進(jìn)程I/O請(qǐng)求的優(yōu)先級(jí),分三種級(jí)別:1代表 real time ; 2代表best-effort; 3代表idle ;
如:ionice -c1 -p 1113(給進(jìn)程1113的I/O優(yōu)先級(jí)設(shè)置為最高優(yōu)先級(jí))
3侈咕、根據(jù)應(yīng)用類(lèi)型公罕,適當(dāng)調(diào)整page size 和block size;
4、升級(jí)驅(qū)動(dòng)程序耀销;
第四節(jié) :網(wǎng)絡(luò)可調(diào)性能參數(shù)
對(duì)于我們web應(yīng)用來(lái)說(shuō)楼眷,網(wǎng)絡(luò)性能調(diào)整如此重要,linux的網(wǎng)絡(luò)支持是無(wú)與倫比的熊尉;是作為網(wǎng)絡(luò)服務(wù)器的首先罐柳;對(duì)于web服務(wù)來(lái)說(shuō):除了應(yīng)用的響應(yīng)速度外,linux網(wǎng)絡(luò)管理子系統(tǒng)狰住,網(wǎng)卡张吉,帶寬都可能成為性能瓶頸;
網(wǎng)絡(luò)參數(shù)可以在/proc/sys/net/ipv4/ ? 下面的文件中進(jìn)行配置催植。
可以查看和設(shè)置的參數(shù):
1肮蛹、查看網(wǎng)卡設(shè)置是否全雙工傳輸?shù)模?echtool eth0
2.、設(shè)置MTU(最大傳輸單元)创南,在帶寬G以上的時(shí)候伦忠,要考慮將MTU增大,提高傳輸性能稿辙;
如: ifconfig eth0 mtu 9000 up
如果數(shù)據(jù)包的長(zhǎng)度大于mtu的長(zhǎng)度時(shí)昆码,很容易出現(xiàn)丟包情況。
3.邻储、增加網(wǎng)絡(luò)數(shù)據(jù)緩存未桥;傳輸數(shù)據(jù)時(shí)linux是將包先放入緩存,填滿(mǎn)緩存后即發(fā)送出去芥备;讀操作類(lèi)似冬耿;
sysctl -w net.ipv4.tcp_rmem="4096 87380 8388608" :設(shè)置tcp讀緩存:最小緩存,初始化時(shí)萌壳,最大緩存
sysctl -w net.ipv4.tcp_wmem="4096 87380 8388608" :設(shè)置tcp寫(xiě)緩存:最小緩存亦镶,初始化時(shí)日月,最大緩存
由于是先將數(shù)據(jù)放入緩存再發(fā)送,或收取收據(jù)缤骨,那么當(dāng)內(nèi)存緊張或內(nèi)存不夠用時(shí)爱咬,網(wǎng)絡(luò)丟包就可能出現(xiàn)。
4绊起、禁用window_scaling,并且直接設(shè)置window_size;(就像我們經(jīng)常設(shè)置jvm的參數(shù):xms = xmx一樣
sysctl -w net.ipv4.tcp_window_scaling=0
5精拟、設(shè)置TCP連接可重用性:對(duì)于TIME_OUT狀態(tài)的TCP連接可用于下一個(gè)TCP重用,這樣減少了三次握手和創(chuàng)建時(shí)間虱歪,非常提高性能蜂绎,尤其對(duì)于web server;
如: 開(kāi)啟可重用tcp功能: sysctl -w net.ipv4.tcp_tw_reuse=1 sysctl -w net.ipv4.tcp_tw_recyle=1
6笋鄙、禁用掉沒(méi)必要的tcp/ip協(xié)議功能:比如icmp;broadcast包的接收师枣;
7、linux對(duì)于keeplive的tcp連接有一個(gè)默認(rèn)的過(guò)期時(shí)間萧落;可以減小這個(gè)時(shí)間践美,讓沒(méi)用的連接釋放掉,畢竟tcp連接數(shù)是有限的嘛找岖;
如: sysctl -w net.ipv4.tcp_keepalive_time=1800 (設(shè)置過(guò)期時(shí)間陨倡,1800s)
8、設(shè)置最大tcp正在連接狀態(tài)(還沒(méi)ESTABLISHED)隊(duì)列長(zhǎng)度许布;避免由于太多的tcp連接過(guò)來(lái)兴革,導(dǎo)致服務(wù)器掛掉;比如DoS攻擊
如:sysctl -w net.ipv4.tcp_max_syn_backlog=4096
9爹脾、 綁定tcp類(lèi)型的中斷到一個(gè)cpu上帖旨;(讓cpu去親和這個(gè)類(lèi)型中斷箕昭,避免頻繁的中斷灵妨,影響線(xiàn)程調(diào)度性能)
總結(jié): 我們?cè)谛阅軆?yōu)化一個(gè)應(yīng)用時(shí),首要的是設(shè)定優(yōu)化要達(dá)到的目標(biāo)落竹,然后尋找瓶頸泌霍,調(diào)整參數(shù),達(dá)到優(yōu)化目的述召;但是尋找瓶頸時(shí)可能是最累的朱转,要從大范圍,通過(guò)很多用例积暖,很多測(cè)試報(bào)告藤为,不斷的縮小范圍,最終確定瓶頸點(diǎn)夺刑;以上這些參數(shù)只是個(gè)認(rèn)識(shí)缅疟,系統(tǒng)性能優(yōu)化中可能用到分别,但并不是放之四海而皆準(zhǔn)的; 有的參數(shù)要邊測(cè)試存淫,邊調(diào)整的耘斩;