IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【高并发高性能高可用之海量数据MySQL实战-27】-MySQL服务器层面优化 -> 正文阅读

[系统运维]【高并发高性能高可用之海量数据MySQL实战-27】-MySQL服务器层面优化

1、缓冲区优化

将数据保存在内存中,保证从内存读取数据

设置足够大的innodb_buffer_pool_size?,将数据读取到内存中。

1.?InnoDB使用操作在服务器启动时为整个缓冲池分配内存。 ?innodb_buffer_pool_size?系统变量定义缓冲池大小。通常,建议的innodb_buffer_pool_size值为系统内存的 50%?到 75%。

2.?在具有大量内存的系统上,可以通过将缓冲池划分为多个缓冲池实例来提高并发性。

innodb_buffer_pool_instances?系统变量定义缓冲池实例的数量。?

怎样确定 innodb_buffer_pool_size 足够大。数据是从内存读取而不是硬盘?

2、降低磁盘写入次数

对于生产环境来说,很多日志是不需要开启的,比如:通用查询日志、慢查询日志、错误日志 使用足够大的写入缓存 innodb_log_file_size

推荐 innodb_log_file_size 设置为 0.25 * innodb_buffer_pool_size

设置合适的innodb_flush_log_at_trx_commit,和日志落盘有关系。

3、MySQL数据库配置优化

表示缓冲池字节大小。

推荐值为物理内存的50%~80%。

innodb_buffer_pool_size

用来控制redo log刷新到磁盘的策略。

innodb_flush_log_at_trx_commit=1

每提交1次事务同步写到磁盘中,可以设置为n。

sync_binlog=1

脏页占innodb_buffer_pool_size的比例时,触发刷脏页到磁盘。 推荐值为25%~50%。?

innodb_max_dirty_pages_pct=30

后台进程最大IO性能指标。

默认200,如果SSD,调整为5000~20000

innodb_io_capacity=200

在MySQL5.1.X版本中,由于代码写死,因此最多只会刷新100个脏页到磁盘、合并20个插入缓 冲,即使磁盘有能力处理更多的请求,也只会处理这么多,这样在更新量较大(比如大批量INSERT)的时候,脏页刷新可能就会跟不上,导致性能下降。

而在MySQL5.5.X版本里,innodb_io_capacity参数可以动态调整刷新脏页的数量,这在一定程度 ?上解决了这一问题。

innodb_io_capacity参数默认是200,单位是页。该参数设置的大小取决于硬盘的IOPS,即每秒的 ?输入输出量(或读写次数)。

至于什么样的磁盘配置应该设置innodb_io_capacity参数的值是多少,大家可参考下表。

指定innodb共享表空间文件的大小。

innodb_data_file_path

慢查询日志的阈值设置,单位秒。

long_qurey_time=0.3

mysql复制的形式,row为MySQL8.0的默认形式。

binlog_format=row

调高该参数则应降低interactive_timeout、wait_timeout的值。

max_connections=200

过大,实例恢复时间长;过小,造成日志切换频繁。?

innodb_log_file_size

全量日志建议关闭。

默认关闭。

general_log=0

4、操作系统优化

1)?内核参数优化

CentOS系统针对mysql的参数优化内核相关参数(/etc/sysctl.conf)

以下参数可以直接放到sysctl.conf文件的末尾。

1. 增 加 监 听 队 列 上 限 : net.core.somaxconn = 65535

net.core.netdev_max_backlog = 65535

net.ipv4.tcp_max_syn_backlog = 65535 2.加快TCP连接的回收:

net.ipv4.tcp_fin_timeout = 10

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

3.?TCP连接接收和发送缓冲区大小的默认值和最大值: net.core.wmem_default?= 87380

net.core.wmem_max = 16777216

net.core.rmem_default = 87380

net.core.rmem_max = 16777216

4.?减少失效连接所占用的TCP资源的数量,加快资源回收的效率: net.ipv4.tcp_keepalive_time?= 120

net.ipv4.tcp_keepalive_intvl = 30

net.ipv4.tcp_keepalive_probes = 3

5.?单个共享内存段的最大值: kernel.shmmax?= 4294967295

1.?这个参数应该设置的足够大,以便能在一个共享内存段下容纳整个的Innodb缓冲池的大小。

2.?这个值的大小对于64位linux系统,可取的最大值为(物理内存值-1)byte,建议值为大于物理 内存的一半,一般取值大于Innodb缓冲池的大小即可。

6.?控制换出运行时内存的相对权重: vm.swappiness?= 0

这个参数当内存不足时会对性能产生比较明显的影响。(设置为0,表示Linux内核虚拟内存完全被占 ?用,才会要使用交换区。)

Linux系统内存交换区:

在Linux系统安装时都会有一个特殊的磁盘分区,称之为系统交换分区。使用 free -m 命令可以看到swap就是内存交换区。

作用:当操作系统没有足够的内存时,就会将部分虚拟内存写到磁盘的交换区中,这样就会发生内 ?存交换。

如果Linux系统上完全禁用交换分区,带来的风险:

1.?降低操作系统的性能

2.?容易造成内存溢出,崩溃,或都被操作系统kill掉

2)?增加资源限制

打开文件数的限制以下参数可以直接放到(/etc/security/limit.conf)文件的末尾:

*?soft nofile?65535

*?hard nofile?65535

*:表示对所有用户有效 ??????????????????????????????????soft:表示当前系统生效的设置(soft不能大于hard?) hard:表明系统中所能设定的最大值 ????????????nofile:表示所限制的资源是打开文件的最大数目65535:限制的数量

以上两行配置将可打开的文件数量增加到65535个,以保证可以打开足够多的文件句柄。 注意:这个文件的修改需要重启系统才能生效。

3)?磁盘调度策略

1.?cfq?(完全公平队列策略,Linux2.6.18之后内核的系统默认策略)

该模式按进程创建多个队列,各个进程发来的IO请求会被cfq以轮循方式处理,对每个IO请求都是公平 ?的。该策略适合离散读的应用。

2.?deadline?(截止时间调度策略)

deadline,包含读和写两个队列,确保在一个截止时间内服务请求(截止时间是可调整的),而默认读 ?期限短于写期限。这样就防止了写操作因为不能被读取而饿死的现象,deadline对数据库类应用是最好 ?的选择。

3.?noop?(电梯式调度策略)

noop只实现一个简单的FIFO队列,倾向饿死读而利于写,因此noop对于闪存设备、RAM及嵌入式系统 ?是最好的选择。

4.?anticipatory?(预料I/O调度策略)

本质上与deadline策略一样,但在最后一次读操作之后,要等待6ms,才能继续进行对其它I/O请求进行 ?调度。它会在每个6ms中插入新的I/O操作,合并写入流,用写入延时换取最大的写入吞吐量。anticipatory适合于写入较多的环境,比如文件服务器。该策略对数据库环境表现很差。

查看调度策略的方法:

cat /sys/block/devname/queue/scheduler

修改调度策略的方法:

echo /sys/block/devname/queue/scheduler

5、服务器硬件优化

提升硬件设备,例如选择尽量高频率的内存(频率不能高于主板的支持)、提升网络带宽、使用SSD高 ?速磁盘、提升CPU性能等。

CPU的选择:

对于数据库并发比较高的场景,CPU的数量比频率重要。

对于CPU密集型场景和频繁执行复杂SQL的场景,CPU的频率越高越好。

如果您觉得文章好看,欢迎点赞收藏加关注,一连三击呀,您的肯定是我持续输出的动力,感谢!!???

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:41:37  更:2022-04-27 11:41:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:52:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码