db-server规范化配置模板一一硬件、文件系统、操作系统

简介:

(从底层到上层的优化)

一、存储层的优化:

使用RAID 1+0,不使用RAID 5/或RAID 6 

raid磁盘使用介意8块盘为一组lun。

切忌跑数据库服务器禁用liunx的软lvm。(严重影响性能)

   阵列卡配备CACHE及BBU模块,作为写CACHE的基础支撑

注意:BBU:是阵列卡cache的供电模块,里面是多个电池组成的电池组。 


    设置写策略为WB,或者FORCE WB,千万别用WT策略

        1、wb = write back:

        从os提交io写请求到磁盘里,首先会传到阵列卡里,阵列卡会先把io写请求放到cache里,然后在从cache里异步的写入磁盘里

        注意:os认为io提交完成了,其实数据并没有完全写盘,而是在cache中,如果BBU电量低于百分之15,则会切换wt模式,此时io压力负载会相当的高


        2、FORCE WB:不论电量多少,都强制写到cache里面。

        注意:如果阵列卡的BBU模块损坏或者没电,写入策略又设置成force WB,那os发送io写请求,还会写入cache里。此时如果机器停电,阵列卡cache里的数据则会丢失。

        3、wt = write through :不写cache 直接写磁盘。

关闭预读,没必要预读,那点宝贵的CACHE用来做写缓存(强烈推荐)

关闭物理磁盘cache策略,防止丢数据

注意:服务器断电时,由于阵列卡的cache有BBU模块供电,能够将cache里的数据写入到磁盘,但是磁盘的cache没有供电机制,一旦停电,磁盘cache里的数据会丢失。


使用高转速硬盘,不使用低转速盘
或者使用SSD及PCIe-SSD盘 

基于SSD设备调整系统内核参数:

通过调整 /sys/block/sdx/queue/read_ahead_kb 来控制系统内核中预读策略的大小为16KB(具体多少要看平均每次IO读大小,16kb是经验值),通过适当预读提高整体性能。

注意:把预读出来的块放到内存里面,这样可以有效提高,顺序IO读的效率,视情况而定。


大量的IO请求数必定会产生庞大数量的中断请求,因此需要在每个核上绑定不同的中断号策略,避免单歌核心的cpu负载过高。 


中断:内核跟io打交道的时候,是通过驱动连接,因此再跟驱动交互的时候就会产生中断问题(因为cpu和内存比磁盘的速度要快)

======================================================

二、BIOS的优化:

System Profile(系统配置)选择Performance Per Watt Optimized(DAPC),发挥最大功耗性能,而不是节能模式(高运算节点禁用)。

注意:在节能模式下,服务器低频性能转高频性能时,容易出现bug,导致服务器功耗发挥不起来。


Memory Frequency(内存频率)选择Maximum Performance(最佳性能)

C1E,允许您在处理器处于闲置状态时启用或禁用处理器切换至最低性能状态,建议关闭(默认启用)

C States(C状态),允许您启用或禁用处理器在所有可用电源状态下运行,建议关闭(默认启用)  

CPU优先选择主频高(运算能力),其次选择核数多的(可以多线程并发处理,使用多实例)。

注意:由于mysql是单进程,多线程的工作模式,所以更多的是依赖于高主频的cpu,如果是多实例,可以选择核心多的,来提高运算性能

如果有硬盘大于2T,选择UEFI(新版BIOS),不使用老版本BIOS。 

用更多内存来消除IO瓶颈的影响(多实例时,需要更多内存)。

注意:磁盘的运算速度肯定不如内存或者cpu的处理速度快,即便是SSD或者PCIE-SSD。所以需要更多的内存来支撑,缓解过多的iops。

======================================================

三、操作系统的优化:(/proc/sys/vm/

vm.swappiness

减少使用swap的概率,vm.swappiness设置为0表示尽量少swap,100表示尽量将不活跃(inactive)的内存页交换出去。

注意:

RHEL 7以下,推荐设置为0,RHEL 7以上谨慎设置不高于5 ~ 10,减少使用swap的概率 

RHEL 7以下,如果设置为0,有可能会导致OOM发生,要慎重。

千万不要跟vm.hugepages这个参数一起使用,否则很容易导致oom或者其他的坑。切忌!(有待测试)


 vm.dirty_ratio = 5或者10 (经验值)

注释:规定百分比值。当脏数据组成达到系统内存总数的这个百分比值后开始写下脏数据(pdflush),默认值为20。

不高于30,一定要比dirty_background_ratio大,避免I/O子系统hang住

 vm.dirty_background_ratio = 5或者10 (经验值)

注释:规定百分比值。当脏数据组成达到系统内存总数的这个百分比值后开始在后端写下脏数据pdflush),默认值为10。如果超过10%,就会把所有IO阻塞住,直接进行刷盘操作。此时会产生大量的io阻塞。

  

 vm.overcommit_memory = 1

注释:

定决定是否接受超大内存求的条件。个参数有三个可能的

— 认设置。内核启发式内存量使用理,方法是估算可用内存量,并拒无效

求。憾的是因内存是使用启发式而非准确算法行部署,置有可能会造

成系中的可用内存超

— 内核行无内存量使用理。使用置会增大内存超的可能性,但也可以增

量使用内存任的性能。

— 内存拒等于或者大于可用 swap 大小以及 overcommit_ratio 指定的物理 RAM 比例

的内存求。如果您希望小内存度使用的风险置就是最好的。  

io scheduler(优先使用deadline,如果是SSD,则使用noop) 

 提高调度器请求队列:echo 4096 > /sys/block/sdX/queue/nr_requests

注意:当有大量度请求的时候,系统的请求队列值会过高,这时候需要提高请求队列值。有点类似mysql中的back_log或者thread_cache_size参数,都是把队列池加大一点,让一部分队列先放进来,而不是让他们在外面一直的等待,队列进来后做快速请求,等请求完后在把这个队列快速处理掉。

调整文件系统时:首选xfs,其次是ext4

注意:XFS相比ext3和ext4在高io负载下提高IOPS能力表现更佳。在普通负载时这两个文件系统可能会相当,甚至可能会弱点。

 mount参数:noatime, nodiratime, nobarrier

注意:

noatime, nodiratime:不记录文件/目录的最后访问时间(基本没有意义,无用)

nobarrier:现在的很多文件系统会在数据提交时强制底层设备刷新cache,避免数据丢失,称之为write barriers。

 但是,其实我们数据库服务器底层存储设备要么采用RAID卡,RAID卡本身的电池可以掉电保护;要么采用Flash卡,它也有自我保护机制,保证数据不会丢失。所以我们可以安全的使用nobarrier挂载文件系统。


本文转自 emma_cql 51CTO博客,原文链接:http://blog.51cto.com/chenql/1958938


相关文章
|
2月前
|
存储 算法 安全
操作系统之文件系统的奥秘
【9月更文挑战第19天】本文将深入探索操作系统中不可或缺的组件——文件系统,揭示其工作原理与实现细节。我们将通过浅显的语言和生动的比喻,一步步解析文件系统如何组织数据、管理存储空间,并确保数据的完整性和安全性。文章不仅适合初学者构建基础概念,也能帮助有经验的开发者更深入地理解文件系统的高级特性。
|
8天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
29 9
|
10天前
|
存储 安全 大数据
深入浅出操作系统:文件系统的秘密
【10月更文挑战第35天】本文将揭示文件系统背后的奥秘,从其基本概念到复杂的实现机制。我们将一起探索文件系统的结构和原理,并了解它如何影响我们的日常计算体验。通过简单的例子和比喻,文章旨在使读者对文件系统有一个清晰而深刻的理解,就像甘地所言:“你必须成为你希望在世界上看到的改变。”让我们一起成为理解操作系统的先行者。
|
2月前
|
存储 缓存 文件存储
探索操作系统中的文件系统管理
【9月更文挑战第25天】在数字世界的海洋中,操作系统是指引我们航行的灯塔。它不仅管理着硬件资源,还维护着软件的秩序。本文将深入探讨操作系统中一个至关重要的部分——文件系统管理。我们将从基础概念出发,逐步深入到文件系统的设计与实现,最后通过代码示例来直观展示文件系统的操作。让我们一起揭开文件系统管理的神秘面纱,理解其背后的逻辑与奥秘。
|
2月前
|
Ubuntu 网络安全 开发工具
Ubuntu19.04的安装过程详解以及操作系统初始化配置
本文详细介绍了Ubuntu 19.04操作系统的安装过程、初始化配置、网络设置、软件源配置、SSH远程登录以及终端显示设置。
88 1
Ubuntu19.04的安装过程详解以及操作系统初始化配置
|
3月前
|
存储 弹性计算 负载均衡
阿里云服务器地域、实例、带宽与操作系统等配置选择指南参考
在数字化时代,无论是个人博客、企业官网、APP后端支持,还是小程序运行或者其他项目,云服务器都扮演着至关重要的角色,考虑产品质量、服务和价格等因素,大家现在都喜欢选择阿里云服务器。然而,对于初次接触云服务的新手来说,可能并不是很清楚应该如何选阿里云服务器的地域、实例、带宽与操作系统等配置。本文将从地域选择、实例规格、操作系统、云盘配置、购买时长以及带宽选择等六个方面,为新手用户提供详细的选购指南,以供参考。
阿里云服务器地域、实例、带宽与操作系统等配置选择指南参考
|
3月前
|
编解码 Linux 程序员
深度探索Linux操作系统 —— 构建根文件系统2
深度探索Linux操作系统 —— 构建根文件系统
45 12
|
3月前
|
存储 人工智能 数据管理
深入理解Linux操作系统之文件系统管理探索人工智能:从理论到实践的旅程
【8月更文挑战第30天】在探索Linux的无限可能时,我们不可避免地会遇到文件系统管理这一核心话题。本文将深入浅出地介绍Linux文件系统的基础知识、操作命令及高级技巧,帮助你更有效地管理和维护你的系统。从基础概念到实践应用,我们将一步步揭开Linux文件系统的神秘面纱。
|
3月前
|
机器学习/深度学习 Linux PyTorch
跨平台 DataLoader 实现:支持多种操作系统和硬件架构
【8月更文第29天】在深度学习项目中,数据加载和预处理是非常重要的步骤之一。一个良好的数据加载器(DataLoader)能够显著提升模型训练的速度和效率。随着深度学习应用的不断扩展,对于能够在不同操作系统和硬件架构上无缝运行的数据加载器的需求也日益增长。本文将探讨如何设计和实现一个跨平台的 DataLoader,确保其兼容性和可移植性。
73 0
|
14天前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
37 0
Vanilla OS:下一代安全 Linux 发行版