您好,登錄后才能下訂單哦!
在服務器硬件中,最容易影響數據庫性能的是CPU資源和可用內存大小以及I/O。
選擇CPU時需要考慮的點:
內存:
使用傳統機器磁盤。機械硬盤讀取數據的過程:
注:第一步+第二部=磁盤的訪問時間。第三步消耗的時間=磁盤的傳輸速度
所以選擇機械硬盤主要參考以下幾個點:
RAID:
常用的RAID模式 - RAID 0:
RAID 0是最早出現的RAID模式,也稱之為數據條帶。是組建磁盤陣列中最簡單的一種形式,只需要2塊以上的硬盤即可,成本低,可以提高整個磁盤的性能和吞吐量。 RAID 0沒有提供冗余或錯誤修復能力,但是實現成本是最低的
RAID 0 模式結構圖:
常用的RAID模式 - RAID 1:
RAID 1又稱磁盤鏡像,原理是把一個磁盤的數據鏡像到另一個磁盤上,也就是說數據在寫入一塊磁盤的同時會在另一塊閑置的磁盤上生成鏡像文件,在不影響性能情況下最大限度的保證系統的可靠性和可修復性。
RAID 1 模式結構圖:
常用的RAID模式 - RAID 5:
RAID 5又稱之為分布式奇偶校驗磁盤陣列通過分布式奇偶校驗塊把數據分散到多個磁盤.上這樣如果任何一個盤數據失效,都可以從奇偶校驗塊中重建。但是如果兩塊磁盤失效,則整個卷的數據都無法恢復。
RAID 5 模式結構圖:
常用的RAID模式 - RAID 10,適合數據庫的模式:
RAID 10又稱分片的鏡像它是對磁盤先做RAID 1之后對兩組RAID 1的磁盤再做RAID 0 ,所以對讀寫都有良好的性能,相對于RAID 5重建起來更簡單,速度也更快。
RAID 10 模式結構圖:
RAID級別的選擇,可以參考下表:
相比機械磁盤固態磁盤有更好的隨機讀寫性能,相比機械磁盤固態磁盤有更好的并發支持,相比機械磁盤固態磁盤更容易損壞
固態磁盤的特點:
PCIe卡的特點:
固態磁盤的使用場景:
SAN(Storage Area Network)和NAS(Network-Attached Storage)是兩種外部文件存儲設備加載到服務器上的方法
SAN設備通過光纖鏈接到服務器,設備通過塊接口訪問,服務器可以將其當做硬盤使用:
SAN的優缺點:
NAS設備使用網絡鏈接,通過基于文件的協議如NFS或SMB來訪問。
網絡存儲適合的場景:
網絡對性能的影響:
CPU:
內存:
I/O子系統:
MySQL在不同操作系統需要注意的事項:
內核相關參數(/etc/sysctl.conf
):
net.core.somaxconn=65535
net.core.netdev_max_backlog=65535
net.ipv4.tcp_max_syn_backlog=65535
net.ipv4.tcp_fin_timeout=10
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.core.wmem_default=87380
net.core.wmem_max=16777216
net.core.rmem_default=87380
net.core.rmem_max=16777216
net.ipv4.tcp_keepalive_time=120
net.ipv4.tcp_keepalive_intvl=30
net.ipv4.tcp_keepalive_probes=3
kernel.shmmax=429496295
vm.swappiness=0
參考:
Linux系統內存交換分區:
在MySQL服務器上是否要使用交換分區有一些爭議:
vm.swappiness=0
參數了增加資源限制(/etc/security/limit.conf
),這個文件實際上是Linux PAM也就是插入式認證模塊的配置文件。通過我們會在文件末尾加入以下參數來控制打開文件數的限制:
* soft nofile 65535
* hard nofile 65535
說明:
*
表示對所有用戶有效soft
指的是當前系統生效的設置,對于同一資源,soft的值不能比hard高hard
表明系統中所能設定的最大值nofile
表示所限制的資源是打開文件的最大數目65535
就是限制的次數由于系統默認的可打開文件句柄的數量是比較小的,所以一般我們都會將MySQL服務所在的操作系統的可打開的文件數量增加到65535個以保證可以打開足夠多的文件句柄。需要注意的是,這個文件的修改需要重啟系統才生效。
磁盤調度策略(/sys/block/vda/queue/scheduler
):
除了默認的cfq策略外還可以選擇以下幾種策略:
noop(電梯式調度策略):
NOOP實現了一個FIFO隊列,它像電梯的工作方式一樣對I/O請求進行組織,當有一個新的請求到來時,它將請求合并到最近的請求之后,以此來保證請求同一個介質。NOOP傾向于餓死讀而利于寫,因此NOOP對于閃存設備,RAM以及嵌入式是最好的選擇。
deadline(介質時間調度策略):
Deadline確保了在一個截至時間內服務請求,這個截至時間是可調整的,而默認讀期限短于寫期限。這樣就防止了寫操作因為不能被讀取而餓死的現象。Deadline對數據庫類應用是最好的選擇。
本質上與Deadline一樣,但在最后一次讀操作后,要等待6ms,才能繼續進行對其他I/O請求進行調度。它會在每個6ms中插入新的I/O操作,而會將一些小寫入流合并成一個大寫入流,用寫入延時換取最大的寫入吞吐量。AS適合于寫入較多的環境,比如文件服務器,AS對數據庫環境表現很差。
修改磁盤調度策略的命令,例如我將策略改為deadline:
echo deadline > /sys/block/vda/queue/scheduler
服務器所使用的文件系統對服務器的I/O性能是有一定影響的,而文件系統的選擇十分依賴于操作系統,例如Windows下就只有FAT和NTFS可供選擇:
Linux下則有EXT3、EXT4、XFS,這三種文件系統都是具有日志功能的,這一點對于數據的安全性十分重要。其中XFS性能要比EXT3和EXT4高:
如果使用EXT3和EXT4的話,有幾個掛載參數可以了解一下。EXT3/4文件系統的掛載參數可以在/etc/fstab
文件中配置:
data=writeback | ordered | journal
,其中 writeback 是Innodb最好的選擇
writeback
意味著只有原數據寫入日志,原數據寫入和數據寫入并不是同步的,這是最快的一種配置,因為Innodb有自己的事務日志,所以選擇Innodb是最好的選擇ordered
選項只會記錄原數據,但提供了一些一致性的保證,在寫原數據之前的會先寫數據,使他們保持一致,這個選項比writeback
慢一些,但是如果出現崩潰呢更加安全journal
提供了原子日志的一種行為,在數據寫入到最終位置之前,將記錄到日志中,這個選項對Innodb來說是沒有必要的,在這三個選項中journal
是最慢的一個然后我們再來看看另外兩個重要的參數,在介紹這兩個參數之前,我們需要了解默認情況下Linux操作系統會把文件訪問的時間atime做一個記錄,文件系統在文件被訪問、創建、修改等的時候記錄下了文件的一些時間戳。比如:文件創建時間、最近一次修改時間和最近一次訪問時間;這在絕大部分的場合都是沒有必要的。因為系統運行的時候要訪問大量文件,如果能減少一些動作(比如減少時間戳的記錄次數等)將會顯著提高磁盤 IO 的效率、提升文件系統的性能。如果遇到機器IO負載高或是CPU WAIT高的情況時,可以嘗試使用noatime和nodiratime禁止記錄最近一次訪問時間戳。
所以 noatime 和 nodiratime,是用于禁止記錄文件的訪問時間和讀取目錄的時間的,禁用了這兩個時間的選項后,可以減少一些,寫的操作。系統在讀取文件和目錄時候,不必寫操作來記錄以上兩個時間。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。