91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux培訓-優化篇

發布時間:2020-08-11 00:09:59 來源:ITPUB博客 閱讀:132 作者:wwjfeng 欄目:建站服務器

一.硬件優化

系統運行的速度是由系統中最慢的設備來決定。

選擇固態硬盤:

TLC SLC(最好)MLC


優化的時候,優化離cpu最近的設備

CPU -->     CACHE  

主頻:倍頻 * FSB

CACHE: 高速緩沖器,提高應用程序的命中率.L1(數據區,指令區)獨立->L2 獨立->L3 共享

優化思路:想方設法讓應用數據停留在cache中更長的時間。


應用運行過程:

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


DISK:優化IO算法

SSD: SATA3 --> PCIe -->  NVMe


二.系統層面

1.常用命令

(1).ps

自定義顯示進程列

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

(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:

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


Device:

選項 說明
Device 設備名稱
tps 每秒向磁盤設備請求數據的次數,包括讀、寫請求,為rtps與wtps的和。出于效率考慮,每一次IO下發后并不是立即處理請求,而是將請求合并(merge),這里tps指請求合并后的請求計數。
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 取樣時間間隔內讀扇區總數量
Blk_wrtn 取樣時間間隔內寫扇區總數量

# 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


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


(4).mpstat

查看多核cpu ,可以顯示每個核心cpu的運行情況。 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 為等待時間


(6).sar

sar 日志存儲目錄

cd /var/log/sa

# sar -f sa31       #默認cpu
# sar -f sa31 -b    #查看磁盤
# sar -q -f sa31    #查看隊列
# sar -q -f sa31 |awk '{print $3}' |sort -unr                    #最大隊列的進程號
# sar -d -p -f sa31 |awk '{print $2,$4}' |grep ^sd |sort -unr    #哪個設備的讀取速率最高
# sar -n DEV        #查看網絡吞吐量
# sar -r 1 1        #內存和swap使用情況

(7).dmidecode

查看詳細的硬件信息


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

查看各種硬件信息命令


(9).dmesg

- 記錄系統啟動時候的硬件相關信息,啟動后該日志文件不再更新

/var/log/dmesg

- 查看系統啟動后加載的硬件信息,需要查看dmesg


2.sysctl

(1).sysctl -a     #顯示當前可調整的所有參數

(2).修改配置文件,調整參數

vim /etc/sysctl.conf 老版本

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

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

使參數永久生效


3.swap

swap可以是文件也可以是磁盤分區,最多可以有32個,每個最大64G

性能考慮:

避免 swap 文件

將 swap 分區分速度快的介質上

多個小的 swap 效果要比一個大的 swap 效果好 設置 swap 優先級別


4.內核IO調度器

-NooP Scheduler

適用于隨機訪問設備,如閃盤 FIFO ,基本合并與排序 適用于嵌入式操作系統

-Anticipatory I/O Scheduler 

內核默認的調度器

不適用于數據吞吐量大的數據庫系統

-DeadLine Io調度器

提升 IO 性能的同時避免 IO等待

保證既定的IO請求最小的延遲時間

-CFQ I/O Schedulere

RHEL 默認的調度器 IO請求輪詢進行,為應用平均分配帶寬,提供一個平等的工作環境


(1).臨時修改

[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.內存優化

相關參數:

vm.dirty_expire_centisecs = 3000   #舊數據的回寫時間,30秒后臟頁要回寫到磁盤
vm.dirty_background_ratio = 10     #整個系統臟頁百分比超過10,則進行刷臟頁
vm.dirty_ratio = 30                #整個臟頁達到內存的30%時,則進行刷臟頁
vm.dirty_writeback_centisecs = 500 #刷新臟數據進程的時間間隔
vm.swappiness=30                   #使用內存還是swap的傾向值

6.網絡優化

BDP 帶寬延遲乘積

計算公式(字節) = 帶寬(MB)x 延時 (s)x1024x1024/8

相關參數:

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


 



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘潭县| 承德市| 尚义县| 祁阳县| 镇雄县| 泊头市| 安康市| 和静县| 当阳市| 滕州市| 柘城县| 宿迁市| 邯郸县| 抚宁县| 新邵县| 静海县| 同仁县| 延津县| 本溪| 滦平县| 香河县| 吉林市| 安陆市| 大英县| 康马县| 杂多县| 青海省| 普兰县| 梧州市| 平舆县| 盘锦市| 赤峰市| 隆德县| 瑞昌市| 镇江市| 岳普湖县| 清水县| 昌邑市| 佳木斯市| 双鸭山市| 纳雍县|