optimize

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)整的耘斩;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市桅咆,隨后出現(xiàn)的幾起案子括授,更是在濱河造成了極大的恐慌,老刑警劉巖岩饼,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荚虚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡忌愚,警方通過(guò)查閱死者的電腦和手機(jī)曲管,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)硕糊,“玉大人院水,你說(shuō)我怎么就攤上這事〖蚴” “怎么了檬某?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)螟蝙。 經(jīng)常有香客問(wèn)我恢恼,道長(zhǎng),這世上最難降的妖魔是什么胰默? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任场斑,我火速辦了婚禮,結(jié)果婚禮上牵署,老公的妹妹穿的比我還像新娘漏隐。我一直安慰自己,他們只是感情好奴迅,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布青责。 她就那樣靜靜地躺著,像睡著了一般取具。 火紅的嫁衣襯著肌膚如雪脖隶。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,549評(píng)論 1 312
  • 那天暇检,我揣著相機(jī)與錄音产阱,去河邊找鬼。 笑死块仆,一個(gè)胖子當(dāng)著我的面吹牛构蹬,可吹牛的內(nèi)容都是我干的酿矢。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼怎燥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瘫筐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起铐姚,我...
    開(kāi)封第一講書(shū)人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤策肝,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后隐绵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體之众,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年依许,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了棺禾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡峭跳,死狀恐怖膘婶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蛀醉,我是刑警寧澤悬襟,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站拯刁,受9級(jí)特大地震影響脊岳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜垛玻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一割捅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧帚桩,春花似錦亿驾、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)参淹。三九已至醉锄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浙值,已是汗流浹背恳不。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留开呐,地道東北人烟勋。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓规求,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親卵惦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子阻肿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容