真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Linux培訓(xùn)-優(yōu)化篇

一.硬件優(yōu)化

網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),成都做網(wǎng)站公司-創(chuàng)新互聯(lián)已向上千家企業(yè)提供了,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷等服務(wù)!設(shè)計(jì)與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價(jià)格為您打造企業(yè)品質(zhì)網(wǎng)站。

系統(tǒng)運(yùn)行的速度是由系統(tǒng)中最慢的設(shè)備來決定。

選擇固態(tài)硬盤:

TLC SLC(最好)MLC

優(yōu)化的時(shí)候,優(yōu)化離cpu最近的設(shè)備

CPU -->     CACHE  

主頻:倍頻 * FSB

CACHE: 高速緩沖器,提高應(yīng)用程序的命中率.L1(數(shù)據(jù)區(qū),指令區(qū))獨(dú)立->L2 獨(dú)立->L3 共享

優(yōu)化思路:想方設(shè)法讓應(yīng)用數(shù)據(jù)停留在cache中更長(zhǎng)的時(shí)間。

應(yīng)用運(yùn)行過程:

DISK --> MEM --> cache --> CPU

DISK:優(yōu)化IO算法

SSD: SATA3 --> PCIe -->  NVMe

二.系統(tǒng)層面

1.常用命令

(1).ps

自定義顯示進(jìn)程列

# ps axo pid,comm,pcpu

(2).vmstat

# vmstat 1 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0    148 284184    212 663928    0    0    12     5   81  121  0  0 99  0  0
 0  0    148 284060    212 663928    0    0     0     0   96  126  0  0 100  0  0
 
r 表示運(yùn)行隊(duì)列(就是說多少個(gè)進(jìn)程真的分配到CPU),我測(cè)試的服務(wù)器目前CPU比較空閑,沒什么程序在跑,當(dāng)這個(gè)值超過了CPU數(shù)目,就會(huì)出現(xiàn)CPU瓶頸了。這個(gè)也和top的負(fù)載有關(guān)系,一般負(fù)載超過了3就比較高,超過了5就高,超過了10就不正常了,服務(wù)器的狀態(tài)很危險(xiǎn)。top的負(fù)載類似每秒的運(yùn)行隊(duì)列。如果運(yùn)行隊(duì)列過大,表示你的CPU很繁忙,一般會(huì)造成CPU使用率很高。
b 表示阻塞的進(jìn)程,這個(gè)不多說,進(jìn)程阻塞,大家懂的。
swpd 虛擬內(nèi)存已使用的大小,如果大于0,表示你的機(jī)器物理內(nèi)存不足了,如果不是程序內(nèi)存泄露的原因,那么你該升級(jí)內(nèi)存了或者把耗內(nèi)存的任務(wù)遷移到其他機(jī)器。
free   空閑的物理內(nèi)存的大小,我的機(jī)器內(nèi)存總共8G,剩余3415M。
buff   Linux/Unix系統(tǒng)是用來存儲(chǔ),目錄里面有什么內(nèi)容,權(quán)限等的緩存,我本機(jī)大概占用300多M
cache cache直接用來記憶我們打開的文件,給文件做緩沖,我本機(jī)大概占用300多M(這里是Linux/Unix的聰明之處,把空閑的物理內(nèi)存的一部分拿來做文件和目錄的緩存,是為了提高 程序執(zhí)行的性能,當(dāng)程序使用內(nèi)存時(shí),buffer/cached會(huì)很快地被使用。)
si  每秒從磁盤讀入虛擬內(nèi)存的大小,如果這個(gè)值大于0,表示物理內(nèi)存不夠用或者內(nèi)存泄露了,要查找耗內(nèi)存進(jìn)程解決掉。我的機(jī)器內(nèi)存充裕,一切正常。
so  每秒虛擬內(nèi)存寫入磁盤的大小,如果這個(gè)值大于0,同上。
bi  塊設(shè)備每秒接收的塊數(shù)量,這里的塊設(shè)備是指系統(tǒng)上所有的磁盤和其他塊設(shè)備,默認(rèn)塊大小是1024byte,我本機(jī)上沒什么IO操作,所以一直是0,但是我曾在處理拷貝大量數(shù)據(jù)(2-3T)的機(jī)器上看過可以達(dá)到140000/s,磁盤寫入速度差不多140M每秒
bo 塊設(shè)備每秒發(fā)送的塊數(shù)量,例如我們讀取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO過于頻繁,需要調(diào)整。
in 每秒CPU的中斷次數(shù),包括時(shí)間中斷
cs 每秒上下文切換次數(shù),例如我們調(diào)用系統(tǒng)函數(shù),就要進(jìn)行上下文切換,線程的切換,也要進(jìn)程上下文切換,這個(gè)值要越小越好,太大了,要考慮調(diào)低線程或者進(jìn)程的數(shù)目,例如在apache和nginx這種web服務(wù)器中,我們一般做性能測(cè)試時(shí)會(huì)進(jìn)行幾千并發(fā)甚至幾萬并發(fā)的測(cè)試,選擇web服務(wù)器的進(jìn)程可以由進(jìn)程或者線程的峰值一直下調(diào),壓測(cè),直到cs到一個(gè)比較小的值,這個(gè)進(jìn)程和線程數(shù)就是比較合適的值了。系統(tǒng)調(diào)用也是,每次調(diào)用系統(tǒng)函數(shù),我們的代碼就會(huì)進(jìn)入內(nèi)核空間,導(dǎo)致上下文切換,這個(gè)是很耗資源,也要盡量避免頻繁調(diào)用系統(tǒng)函數(shù)。上下文切換次數(shù)過多表示你的CPU大部分浪費(fèi)在上下文切換,導(dǎo)致CPU干正經(jīng)事的時(shí)間少了,CPU沒有充分利用,是不可取的。
us 用戶CPU時(shí)間,我曾經(jīng)在一個(gè)做加密解密很頻繁的服務(wù)器上,可以看到us接近100,r運(yùn)行隊(duì)列達(dá)到80(機(jī)器在做壓力測(cè)試,性能表現(xiàn)不佳)。
sy 系統(tǒng)CPU時(shí)間,如果太高,表示系統(tǒng)調(diào)用時(shí)間長(zhǎng),例如是IO操作頻繁。
id  空閑 CPU時(shí)間,一般來說,id + us + sy = 100,一般我認(rèn)為id是空閑CPU使用率,us是用戶CPU使用率,sy是系統(tǒng)CPU使用率。
wt 等待IO CPU時(shí)間。

(3).iostat

# iostat
Linux 3.10.0-693.el7.x86_64 (rh2)       08/02/2018      _x86_64_        (1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.20    0.01    0.32    0.01    0.00   99.46
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.87        12.23         5.24     898971     385228
scd0              0.00         0.01         0.00       1054          0
dm-0              0.86        11.76         5.21     864302     383008
dm-1              0.00         0.03         0.00       2228        152

avg-cpu:

選項(xiàng) 說明
%user CPU在用戶態(tài)執(zhí)行進(jìn)程的時(shí)間百分比。
%nice CPU在用戶態(tài)模式下,用于nice操作,所占用CPU總時(shí)間的百分比
%system CPU處在內(nèi)核態(tài)執(zhí)行進(jìn)程的時(shí)間百分比
%iowait CPU用于等待I/O操作占用CPU總時(shí)間的百分比
%steal 管理程序(hypervisor)為另一個(gè)虛擬進(jìn)程提供服務(wù)而等待虛擬CPU的百分比
%idle CPU空閑時(shí)間百分比

Device:

選項(xiàng) 說明
Device 設(shè)備名稱
tps 每秒向磁盤設(shè)備請(qǐng)求數(shù)據(jù)的次數(shù),包括讀、寫請(qǐng)求,為rtps與wtps的和。出于效率考慮,每一次IO下發(fā)后并不是立即處理請(qǐng)求,而是將請(qǐng)求合并(merge),這里tps指請(qǐng)求合并后的請(qǐng)求計(jì)數(shù)。
Blk_read/s Indicate the amount of data read from the device expressed in a number of blocks per second. Blocks are equivalent to sectors with kernels 2.4 and later and therefore have a size of 512 bytes. With older kernels, a block is of indeterminate size.
Blk_wrtn/s Indicate the amount of data written to the device expressed in a number of blocks per second.
Blk_read 取樣時(shí)間間隔內(nèi)讀扇區(qū)總數(shù)量
Blk_wrtn 取樣時(shí)間間隔內(nèi)寫扇區(qū)總數(shù)量

# iostat -x
Linux 3.10.0-693.el7.x86_64 (rh2)       08/02/2018      _x86_64_        (1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.20    0.01    0.32    0.01    0.00   99.46
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.02    0.24    0.63    12.23     5.24    40.10     0.00    0.88    1.18    0.77   0.31   0.03
scd0              0.00     0.00    0.00    0.00     0.01     0.00    68.00     0.00    0.35    0.35    0.00   0.35   0.00
dm-0              0.00     0.00    0.21    0.64    11.75     5.21    39.57     0.00    0.94    1.33    0.80   0.31   0.03
dm-1              0.00     0.00    0.00    0.00     0.03     0.00    36.06     0.00    7.01    0.05   24.21   1.21   0.00

選項(xiàng) 說明
rrqm/s 每秒對(duì)該設(shè)備的讀請(qǐng)求被合并次數(shù),文件系統(tǒng)會(huì)對(duì)讀取同塊(block)的請(qǐng)求進(jìn)行合并
wrqm/s 每秒對(duì)該設(shè)備的寫請(qǐng)求被合并次數(shù)
r/s 每秒完成的讀次數(shù)
w/s 每秒完成的寫次數(shù)
rkB/s 每秒讀數(shù)據(jù)量(kB為單位)
wkB/s 每秒寫數(shù)據(jù)量(kB為單位)
avgrq-sz 平均每次IO操作的數(shù)據(jù)量(扇區(qū)數(shù)為單位)
avgqu-sz 平均等待處理的IO請(qǐng)求隊(duì)列長(zhǎng)度
await 平均每次IO請(qǐng)求等待時(shí)間(包括等待時(shí)間和處理時(shí)間,毫秒為單位)
svctm 平均每次IO請(qǐng)求的處理時(shí)間(毫秒為單位)
%util 采用周期內(nèi)用于IO操作的時(shí)間比率,即IO隊(duì)列非空的時(shí)間比率

(4).mpstat

查看多核cpu ,可以顯示每個(gè)核心cpu的運(yùn)行情況。 vmstat 只能顯示總體的cpu

# mpstat -P ALL
Linux 3.10.0-693.el7.x86_64 (rh2)       08/02/2018      _x86_64_        (1 CPU)
10:13:33 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
10:13:33 PM  all    0.20    0.01    0.32    0.01    0.00    0.01    0.00    0.00    0.00   99.46
10:13:33 PM    0    0.20    0.01    0.32    0.01    0.00    0.01    0.00    0.00    0.00   99.46

(5).

# time ls

real    0m0.006s

user    0m0.000s

sys     0m0.005s

* 0.001s 為等待時(shí)間

(6).sar

sar 日志存儲(chǔ)目錄

cd /var/log/sa

# sar -f sa31       #默認(rèn)cpu
# sar -f sa31 -b    #查看磁盤
# sar -q -f sa31    #查看隊(duì)列
# sar -q -f sa31 |awk '{print $3}' |sort -unr                    #最大隊(duì)列的進(jìn)程號(hào)
# sar -d -p -f sa31 |awk '{print $2,$4}' |grep ^sd |sort -unr    #哪個(gè)設(shè)備的讀取速率最高
# sar -n DEV        #查看網(wǎng)絡(luò)吞吐量
# sar -r 1 1        #內(nèi)存和swap使用情況

(7).dmidecode

查看詳細(xì)的硬件信息

(8).lspci,lscpu,lsusb,lsscsi,lsblk

查看各種硬件信息命令

(9).dmesg

- 記錄系統(tǒng)啟動(dòng)時(shí)候的硬件相關(guān)信息,啟動(dòng)后該日志文件不再更新

/var/log/dmesg

- 查看系統(tǒng)啟動(dòng)后加載的硬件信息,需要查看dmesg

2.sysctl

(1).sysctl -a     #顯示當(dāng)前可調(diào)整的所有參數(shù)

(2).修改配置文件,調(diào)整參數(shù)

vim /etc/sysctl.conf 老版本

vim /etc/sysctl.d/10-sysctl.conf  新版本

(3).sysctl -p /etc/sysctl.d/10-sysctl.conf  

使參數(shù)永久生效

3.swap

swap可以是文件也可以是磁盤分區(qū),最多可以有32個(gè),每個(gè)最大64G

性能考慮:

避免 swap 文件

將 swap 分區(qū)分速度快的介質(zhì)上

多個(gè)小的 swap 效果要比一個(gè)大的 swap 效果好 設(shè)置 swap 優(yōu)先級(jí)別

4.內(nèi)核IO調(diào)度器

-NooP Scheduler

適用于隨機(jī)訪問設(shè)備,如閃盤 FIFO ,基本合并與排序 適用于嵌入式操作系統(tǒng)

-Anticipatory I/O Scheduler 

內(nèi)核默認(rèn)的調(diào)度器

不適用于數(shù)據(jù)吞吐量大的數(shù)據(jù)庫系統(tǒng)

-DeadLine Io調(diào)度器

提升 IO 性能的同時(shí)避免 IO等待

保證既定的IO請(qǐng)求最小的延遲時(shí)間

-CFQ I/O Schedulere

RHEL 默認(rèn)的調(diào)度器 IO請(qǐng)求輪詢進(jìn)行,為應(yīng)用平均分配帶寬,提供一個(gè)平等的工作環(huán)境

(1).臨時(shí)修改

[root@rh2 ~]# cat /sys/block/sda/queue/scheduler

noop [deadline] cfq 

[root@rh2 ~]# echo cfq>/sys/block/sda/queue/scheduler

[root@rh2 ~]# cat /sys/block/sda/queue/scheduler

noop deadline [cfq] 

(2).修改所有的配置

修改 grub.conf 
#boot=/dev/hda
default=0 
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-8.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet elevator=deadline initrd /initrd-2.6.18-8.el5.img

(3).tuned-adm

5.內(nèi)存優(yōu)化

相關(guān)參數(shù):

vm.dirty_expire_centisecs = 3000   #舊數(shù)據(jù)的回寫時(shí)間,30秒后臟頁要回寫到磁盤
vm.dirty_background_ratio = 10     #整個(gè)系統(tǒng)臟頁百分比超過10,則進(jìn)行刷臟頁
vm.dirty_ratio = 30                #整個(gè)臟頁達(dá)到內(nèi)存的30%時(shí),則進(jìn)行刷臟頁
vm.dirty_writeback_centisecs = 500 #刷新臟數(shù)據(jù)進(jìn)程的時(shí)間間隔
vm.swappiness=30                   #使用內(nèi)存還是swap的傾向值

6.網(wǎng)絡(luò)優(yōu)化

BDP 帶寬延遲乘積

計(jì)算公式(字節(jié)) = 帶寬(MB)x 延時(shí) (s)x1024x1024/8

相關(guān)參數(shù):

net.ipv4.tcp_mem = 194976 259968 389952
net.ipv4.tcp_wmem = 4096  16384 4194304
net.ipv4.tcp_rmem = 4096  87380 4194304
net.ipv4.udp_mem = 194976 259968 389952
net.core.wmem_max = 131071 
net.core.rmem_max = 131071 
net.core.wmem_default = 110592 
net.core.rmem_default = 110592

 


本文名稱:Linux培訓(xùn)-優(yōu)化篇
標(biāo)題來源:http://weahome.cn/article/podgie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部