linux性能調(diào)優(yōu)

一势篡、性能優(yōu)化需求的提出

提出性能優(yōu)化的現(xiàn)象:

  • 前臺(tái)訪問很慢
  • 用戶對(duì)性能很不滿意
  • 數(shù)據(jù)庫(kù)負(fù)載很重
  • xxx功能打開需要1分鐘

系統(tǒng)性的問題褒傅?CPU利用率登失,SWAP利用率或者IO過高導(dǎo)致的整體性能下降静尼?

功能性的問題可霎?整體性良好魄鸦,個(gè)別功能時(shí)延很長(zhǎng)

新出現(xiàn)問題?什么時(shí)候開始的癣朗,之前的系統(tǒng)有哪些變動(dòng)拾因?(升級(jí)或者管理的資源大量增加)

不規(guī)律問題?有時(shí)候快,有時(shí)候慢

二绢记、linux性能分析的目的

1扁达、找出系統(tǒng)性能瓶頸(包括硬件瓶頸和軟件瓶頸);

2蠢熄、提供性能優(yōu)化的方案(升級(jí)硬件跪解?改進(jìn)系統(tǒng)結(jié)構(gòu)?)

3签孔、達(dá)到合理的硬件和軟件配置

4叉讥、使系統(tǒng)資源使用達(dá)到最大的平衡

比如CPU過度使用會(huì)造成大量進(jìn)程等待CPU資源,系統(tǒng)響應(yīng)速度變慢饥追,等待會(huì)造成進(jìn)程數(shù)增加图仓,進(jìn)程增加又會(huì)造成內(nèi)存使用增加,內(nèi)存耗盡又會(huì)造成虛擬內(nèi)存使用但绕,使用虛擬內(nèi)存又會(huì)造成磁盤IO增加和CPU開銷增加)

三救崔、性能分析的步驟

1、需要系統(tǒng)監(jiān)控工具和性能分析工具

  • 對(duì)資源的使用狀況進(jìn)行長(zhǎng)期的監(jiān)控和數(shù)據(jù)采集(nagios捏顺、cacti六孵、ganglia、zabbix)

  • 使用常見的性能分析工具(vmstat幅骄、top劫窒、htop、iotop拆座、free烛亦、iostat)

  • 實(shí)戰(zhàn)技能和經(jīng)驗(yàn)積累

2、出現(xiàn)性能問題的可能原因

  • 應(yīng)用程序的設(shè)計(jì)缺陷懂拾、數(shù)據(jù)庫(kù)查詢?yōu)E用
  • 性能瓶頸,可能是程序差/內(nèi)存不足/磁盤瓶頸铐达,最終表現(xiàn)結(jié)果就是CPU耗盡岖赋,系統(tǒng)負(fù)載極高,響應(yīng)遲緩
  • 物理內(nèi)存不夠時(shí)會(huì)使用交換內(nèi)存瓮孙,使用swap會(huì)帶來(lái)磁盤IO和cpu的開銷
  • 可能造成cpu瓶頸的問題:頻繁執(zhí)Perl唐断,php,java程序生成動(dòng)態(tài)web杭抠;數(shù)據(jù)庫(kù)查詢大量的where子句脸甘、order by/group by 排序......
  • 可能造成內(nèi)存瓶頸問題:高并發(fā)用戶訪問、系統(tǒng)進(jìn)程多偏灿,java內(nèi)存泄露......
  • 可能造成磁盤IO瓶頸問題:生成cache文件丹诀,數(shù)據(jù)庫(kù)頻繁更新,或者查詢大表......

四、影響linux性能的因素

1铆遭、系統(tǒng)硬件資源:

  • CPU

    • 大部分cpu在同一時(shí)間內(nèi)只能運(yùn)行一個(gè)線程硝桩,一些廠商的cpu可以啟用超線程,同一時(shí)間運(yùn)行多線程
    • Linux內(nèi)核會(huì)把多核的處理器當(dāng)做單獨(dú)的CPU來(lái)識(shí)別枚荣,例如兩個(gè)4核的CPU碗脊,在linux系統(tǒng)下會(huì)被當(dāng)做8個(gè)單核CPU
    • 可能出現(xiàn)CPU瓶頸的應(yīng)用:郵件服務(wù)器、動(dòng)態(tài)web服務(wù)器等
  • 內(nèi)存:

    • 內(nèi)存太小橄妆,系統(tǒng)進(jìn)程將被阻塞衙伶,應(yīng)用也將變得緩慢
    • linux采用物理內(nèi)存和虛擬內(nèi)存兩種方式,虛擬內(nèi)存雖然可以緩解物理內(nèi)存的不足害碾,但是占用過多的虛擬內(nèi)存矢劲,應(yīng)用程序的性能將明顯下降
    • 可能出現(xiàn)內(nèi)存性能瓶頸的應(yīng)用有:redis內(nèi)存數(shù)據(jù)庫(kù)服務(wù)器、cache服務(wù)器蛮原、靜態(tài)web服務(wù)器等
  • 磁盤I/O性能:

    • 現(xiàn)今的磁盤都采用了很多的方法來(lái)提高I/O性能卧须,比如常見的磁盤RAID技術(shù)。常見的RAID級(jí)別有RAID0儒陨、RAID1花嘶、RAID5、RAID0+1
    • RAID0:這種方式成本低蹦漠,沒有容錯(cuò)和數(shù)據(jù)修復(fù)功能椭员,因而只能用在對(duì)數(shù)據(jù)安全性要求不高的環(huán)境中
    • RAID1:也就是磁盤鏡像,通過把一個(gè)磁盤的數(shù)據(jù)鏡像到另一個(gè)磁盤上笛园,最大限度地保證磁盤數(shù)據(jù)的可靠性和可修復(fù)性隘击,具有很高的數(shù)據(jù)冗余能力,但磁盤利用率只有50%研铆,因而埋同,成本最高,多用在保存重要數(shù)據(jù)的場(chǎng)合
    • RAID5:采用了磁盤分段加奇偶校驗(yàn)技術(shù)棵红,從而提高了系統(tǒng)可靠性凶赁,RAID5讀出效率很高,寫入效率一般逆甜,至少需要3塊盤虱肄。允許一塊磁盤故障,而不影響數(shù)據(jù)的可用性交煞。
    • RAID0+1:把RAID0和RAID1的技術(shù)結(jié)合起來(lái)就成了RAID0+1咏窿,至少需要4塊盤 。此種方式的數(shù)據(jù)除分布在多個(gè)盤上外素征,每個(gè)盤都有其鏡像盤集嵌,提供全冗余能力萝挤,同時(shí)允許一個(gè)磁盤故障,而不影響數(shù)據(jù)可用性纸淮,并具有快速讀/寫能力
    • 目前常用磁盤類型有STAT平斩、SAS、SSD磁盤咽块。STAT绘面、SAS是普通機(jī)械硬盤,讀寫效率一般侈沪。如要保證較高的性能的讀寫操作揭璃,可選用SSD固態(tài)硬盤
  • 網(wǎng)絡(luò)帶寬

    • 低速的、不穩(wěn)定的網(wǎng)絡(luò)將導(dǎo)致網(wǎng)絡(luò)應(yīng)用程序的訪問阻塞亭罪,而穩(wěn)定瘦馍、高速的網(wǎng)絡(luò)帶寬,可以保證應(yīng)用程序在網(wǎng)絡(luò)上暢通無(wú)阻地運(yùn)行应役。
    • 組建網(wǎng)絡(luò)時(shí)情组,如果局域網(wǎng)有大量數(shù)據(jù)傳輸需求(hadoop大數(shù)據(jù)業(yè)務(wù)、數(shù)據(jù)庫(kù)業(yè)務(wù))箩祥,可采用千兆院崇、萬(wàn)兆網(wǎng)絡(luò)接口,針對(duì)每個(gè)服務(wù)器袍祖,如果單網(wǎng)卡效率不夠底瓣,可采用雙網(wǎng)卡綁定技術(shù),提高網(wǎng)卡數(shù)據(jù)傳輸帶寬和性能蕉陋。

2捐凭、操作系統(tǒng)相關(guān)資源

  • 系統(tǒng)安裝優(yōu)化
    • 磁盤的劃分、SWAP內(nèi)存的分配都直接影響以后系統(tǒng)的運(yùn)行性能
  • 內(nèi)核參數(shù)優(yōu)化
    • 如果部署的是Oracle數(shù)據(jù)庫(kù)應(yīng)用凳鬓,就需要對(duì)系統(tǒng)共享內(nèi)存段茁肠、系統(tǒng)信號(hào)量、文件句柄等參數(shù)進(jìn)行優(yōu)化設(shè)置
    • 如果部署的是web應(yīng)用缩举,就需要根據(jù)web應(yīng)用特性進(jìn)行網(wǎng)絡(luò)參數(shù)的優(yōu)化官套,例如net.ipv4,ip_local_port_range、net.ipv4.tcp_tw_reuse等網(wǎng)絡(luò)內(nèi)核參數(shù)
  • 文件系統(tǒng)優(yōu)化
    • 在linux下可選的文件系統(tǒng)有ext3蚁孔、ext4、xfs惋嚎,根據(jù)不同的應(yīng)用杠氢,選擇不同的文件系統(tǒng)

五、系統(tǒng)性能分析工具

1另伍、vmstat命令

語(yǔ)法:
vmstat [-V] [-n] [delay [count]]

參數(shù):
-V  表示打印出版本信息鼻百,是可選參數(shù)
-n  表示在周期性循環(huán)輸出時(shí)绞旅,輸出的頭部信息僅顯示一次
delay  表示兩次輸出之間的間隔時(shí)間
count  表示按照delay指定的時(shí)間間隔統(tǒng)計(jì)的次數(shù)。默認(rèn)為1

案例:
vastat 3  # 每3秒鐘更新一次輸出信息温艇,循環(huán)輸出
vastat 3 5 # 每3秒輸出一次因悲,共輸出5次

2、iostat

功能:對(duì)系統(tǒng)的磁盤I/O操作進(jìn)行監(jiān)視勺爱,同時(shí)也會(huì)給出CPU的使用情況

語(yǔ)法:
iostat [-c|-d] [-k] [-t] [-x[device]] [interval [count]]

參數(shù):
-c 顯示cpu的使用情況
-d 顯示磁盤的使用情況
-k 每秒以k bytes為單位顯示數(shù)據(jù)
-t 打印出統(tǒng)計(jì)信息開始執(zhí)行的時(shí)間
-x device:指定要統(tǒng)計(jì)的磁盤設(shè)備名稱晃琳,默認(rèn)為所有的磁盤設(shè)備
interval:指定兩次統(tǒng)計(jì)間隔的時(shí)間
count:按照interval指定的時(shí)間間隔統(tǒng)計(jì)的次數(shù)

3、sar命令

很強(qiáng)大琐鲁,是分析系統(tǒng)性能的重要工具之一卫旱,通過sar命令,可以全面的獲取系統(tǒng)的CPU围段、運(yùn)行隊(duì)列顾翼、磁盤I/O、分頁(yè)(交換區(qū))奈泪、內(nèi)存适贸、CPU中斷、網(wǎng)絡(luò)等性能數(shù)據(jù)

語(yǔ)法:
sar [option] [-o filename] [interval [count]]

參數(shù):
option為命令行選項(xiàng)涝桅,sar命令的選項(xiàng)很多拜姿,下面是常用選項(xiàng):
-A 顯示系統(tǒng)所有資源設(shè)備(CPU、內(nèi)存苹支、磁盤)的運(yùn)行情況
-u 顯示系統(tǒng)出所有CPU在采樣時(shí)間內(nèi)的負(fù)載狀態(tài)
-P 顯示當(dāng)前系統(tǒng)中指定CPU的使用情況
-d 顯示系統(tǒng)所有硬盤設(shè)備在采樣時(shí)間內(nèi)的使用狀況
-r 顯示系統(tǒng)內(nèi)存在采樣時(shí)間內(nèi)的使用狀況
-b 顯示緩沖區(qū)在采樣時(shí)間內(nèi)的使用情況
-v 顯示進(jìn)程砾隅、文件、I節(jié)點(diǎn)和鎖表狀態(tài)
-n 顯示網(wǎng)絡(luò)運(yùn)行狀態(tài)债蜜。參數(shù)后面可跟DEV晴埂、EDEV、SOCK和FULL寻定。DEV顯示網(wǎng)絡(luò)接口信息儒洛,EDEV顯示網(wǎng)絡(luò)錯(cuò)誤的統(tǒng)計(jì)數(shù)據(jù),SOCK顯示套接字信息狼速,F(xiàn)ULL顯示三個(gè)所有的信息琅锻。可以單獨(dú)或者一起使用
interval 表示采樣間隔時(shí)間向胡,必填
count 采樣次數(shù)恼蓬,可選,默認(rèn)值為1

測(cè)試題:

1僵芹、操作系統(tǒng)如何管理塊設(shè)備(磁盤)处硬,如何讀寫塊設(shè)備。

block概念

  • 操作系統(tǒng)無(wú)法對(duì)數(shù)目眾多的扇區(qū)進(jìn)行尋址拇派,因此操作系統(tǒng)將相鄰的扇區(qū)組合在一起荷辕,形成了塊block凿跳,(8個(gè)扇區(qū),80.5 kb 4kb大写健)*
  • 在linux文件系統(tǒng)重多個(gè)連續(xù)的扇區(qū)控嗜,被稱之為block,塊的概念骡显,也是在系統(tǒng)中被認(rèn)為是最小的存儲(chǔ)單位
  • 操作系統(tǒng)規(guī)定疆栏,一個(gè)block只能存放一個(gè)文件的內(nèi)容,因此文件占用的空間大小蟆盐,只能是block的整數(shù)倍

讀取文件步驟:

1承边、打開文件

2、找到文件的inode號(hào)

3石挂、通過inode號(hào)博助,找到文件數(shù)據(jù)在磁盤上的位置,也就是block的位置

管理:

  • 分區(qū)
  • 格式化
  • 掛載

2痹愚、什么命令可以查看磁盤io情況富岳,命令有哪些附加參數(shù)可選。

答:iostat命令

語(yǔ)法:
iostat [-c|-d] [-k] [-t] [-x[device]] [interval [count]]

參數(shù):
-c 顯示cpu的使用情況
-d 顯示磁盤的使用情況
-k 每秒以k bytes為單位顯示數(shù)據(jù)
-t 打印出統(tǒng)計(jì)信息開始執(zhí)行的時(shí)間
-x device:指定要統(tǒng)計(jì)的磁盤設(shè)備名稱拯腮,默認(rèn)為所有的磁盤設(shè)備
interval:指定兩次統(tǒng)計(jì)間隔的時(shí)間
count:按照interval指定的時(shí)間間隔統(tǒng)計(jì)的次數(shù)

3窖式、對(duì)一塊磁盤進(jìn)行分區(qū)格式化掛載,并使用fio工具測(cè)試磁盤性能动壤。

分區(qū):

①磁盤大小在2T以內(nèi)萝喘,使用fdisk對(duì)磁盤進(jìn)行分區(qū):

  • fdisk /dev/sdb
    m進(jìn)入選項(xiàng):
    n: 新建分區(qū)
    d: 刪除分區(qū)
    p: 打印分區(qū)表
    q: 退出不保存
    w: 寫入并且退出
    

②磁盤大小超過2T,使用parted命令分區(qū)琼懊,切要將分區(qū)轉(zhuǎn)換成GPT分區(qū)

parted /dev/sdc

進(jìn)入parted
    mklabel gpt # 更改分區(qū)表類型為gpt阁簸,危險(xiǎn)磁盤數(shù)據(jù)都將丟失
    p:打印分區(qū)表
    mkpart primary 0 500  # 創(chuàng)建主分區(qū),name為primary哼丈,大小為500M
    mkpart logical 501 10000 # 創(chuàng)建邏輯分區(qū)
    p:打印分區(qū)表
    q:退出

格式化:

針對(duì)磁盤分區(qū)進(jìn)行格式化文件系統(tǒng)

mkfs.ext4 /dev/sdc1  # 將sdc1分區(qū)格式化為ext4文件系統(tǒng)
mksfs.xfs /dev/sdc2

掛載

待學(xué)習(xí)启妹。。醉旦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末饶米,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子车胡,更是在濱河造成了極大的恐慌檬输,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匈棘,死亡現(xiàn)場(chǎng)離奇詭異丧慈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)羹饰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門伊滋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人队秩,你說(shuō)我怎么就攤上這事笑旺。” “怎么了馍资?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵筒主,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我鸟蟹,道長(zhǎng)乌妙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任建钥,我火速辦了婚禮藤韵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘熊经。我一直安慰自己泽艘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布镐依。 她就那樣靜靜地躺著匹涮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪槐壳。 梳的紋絲不亂的頭發(fā)上然低,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音务唐,去河邊找鬼雳攘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛绍哎,可吹牛的內(nèi)容都是我干的来农。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼崇堰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼沃于!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起海诲,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤繁莹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后特幔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咨演,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年蚯斯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了薄风。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饵较。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖遭赂,靈堂內(nèi)的尸體忽然破棺而出循诉,到底是詐尸還是另有隱情,我是刑警寧澤撇他,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布茄猫,位于F島的核電站,受9級(jí)特大地震影響困肩,放射性物質(zhì)發(fā)生泄漏划纽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一锌畸、第九天 我趴在偏房一處隱蔽的房頂上張望勇劣。 院中可真熱鬧,春花似錦蹋绽、人聲如沸芭毙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)退敦。三九已至,卻和暖如春蚣抗,著一層夾襖步出監(jiān)牢的瞬間侈百,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工翰铡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钝域,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓锭魔,卻偏偏與公主長(zhǎng)得像例证,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子迷捧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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