深度优化数据库性能:Linux 内核参数调整解析

news2024/11/18 16:33:16

点击上方蓝字关注我

0a05bc31aff3a8b0c547a780eb7c885e.png

数据库服务器性能的优化是每个IT团队关注的焦点之一。除了数据库引擎的优化之外,合理调整操作系统的内核参数也是提高数据库性能的关键。本文将解析一些常见的 Linux 内核参数,以及它们在数据库服务器优化中的作用和建议的值。

1. 参数说明

1.1  关闭 IPv6 支持

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

作用:关闭对 IPv6 的支持,减轻系统负担,提高安全性

解析:

  • net.ipv6.conf.all.disable_ipv6:禁用系统中所有网络接口的IPv6

  • net.ipv6.conf.default.disable_ipv6:禁用默认网络接口的IPv6

说明:大多数数据库环境仍主要使用IPv4,关闭IPv6可以减轻系统对IPv6网络的处理负担,提高系统安全性。

1.2 防范放大攻击

net.ipv4.icmp_echo_ignore_broadcasts = 1

作用:禁用对 ICMP 广播的回应,防范 ICMP 广播放大攻击。

解析:

  • net.ipv4.icmp_echo_ignore_broadcasts:设置为1表示不回应 ICMP 广播

说明:防范 ICMP 广播放大攻击,通过禁用对 ICMP 广播的回应,减少系统响应对可能的网络攻击的风险

1.3 启用恶意 ICMP 错误消息保护

net.ipv4.icmp_ignore_bogus_error_responses = 1

作用:防止网络中的恶意主机发送虚假的 ICMP 错误消息,提高网络安全性

解析:

  • net.ipv4.icmp_ignore_bogus_error_responses:设置为1表示忽略虚假的 ICMP 错误消息

说明:防止网络中的恶意主机通过发送虚假的 ICMP 错误消息来欺骗系统,提高系统的安全性

1.4 核心转储优化

kernel.core_uses_pid = 1

作用:配置核心转储文件名中包含PID,方便识别和调查问题

解析:

  • kernel.core_uses_pid:设置为1表示在核心转储文件名中包含PID

说明:在数据库环境中,当发生进程崩溃时,生成的核心转储文件包含进程的PID,有助于精确定位问题,加速故障排查

1.5 启用 SYN 洪水攻击保护

net.ipv4.tcp_syncookies = 1

作用:启用 SYN 洪水攻击保护,防范网络攻击

解析:

  • net.ipv4.tcp_syncookies:设置为1表示启用 SYN 洪水攻击保护

说明:SYN 洪水攻击是一种常见的DDoS攻击方式,通过启用 SYN 洪水攻击保护,系统可以更好地应对大量的虚假连接请求,确保正常的网络服务

1.6 调整消息队列和共享内存

kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

作用:适当调整消息队列和共享内存的大小,以满足数据库的需求

解析:

  • kernel.msgmnb:设置消息队列的最大字节数

  • kernel.msgmax:设置消息队列中单个消息的最大字节数

  • kernel.shmmax:设置最大共享内存段的大小

  • kernel.shmall:设置系统范围内所有共享内存的总页数

说明:通过调整消息队列和共享内存的大小,可以满足数据库通信和数据共享的需求,优化系统性能

1.7  调整 TIME-WAIT 状态和 TCP 缓冲区

net.ipv4.tcp_max_tw_buckets = 655350
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_rmem = 32768 131072 16777216
net.ipv4.tcp_wmem = 8192 131072 16777216

作用:优化TCP连接的管理,避免资源耗尽,并提高性能

解析:

  • net.ipv4.tcp_max_tw_buckets:设置 TIME-WAIT 状态的最大数量

  • net.ipv4.tcp_tw_recycle:设置为1表示启用 TIME-WAIT 快速回收

  • net.ipv4.tcp_tw_reuse:设置为1表示允许将 TIME-WAIT sockets 重新用于新的TCP 连接

  • net.ipv4.tcp_rmem:设置TCP接收缓冲区的最小、默认和最大字节数

  • net.ipv4.tcp_wmem:设置TCP发送缓冲区的最小、默认和最大字节数

说明:调整 TIME-WAIT 状态和 TCP 缓冲区参数,有助于优化系统处理大量TCP连接的性能,防止资源耗尽。

1.8 调整网络连接和资源管理

net.core.somaxconn = 65535
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0

作用:提高系统的网络性能和连接管理

解析:

  • net.core.somaxconn:设置待处理连接的最大队列长度

  • net.core.netdev_max_backlog:设置每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目

  • net.ipv4.tcp_max_orphans:设置系统允许的最大孤立的TCP连接数量

  • net.ipv4.tcp_max_syn_backlog:设置TCP同时等待处理的最大连接请求数

  • net.ipv4.tcp_timestamps:设置为0表示禁用TCP时间戳

说明:通过调整这些参数,可以提高系统处理连接的能力,有效管理网络资源,防止系统性能瓶颈

1.9  配置 TCP Keepalive 和超时参数

net.ipv4.tcp_keepalive_time = 120
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_retries2 = 5

作用:提高TCP连接的稳定性和可靠性

解析:

  • net.ipv4.tcp_keepalive_time:设置TCP连接的空闲时间,超过此时间将发送keepalive消息

  • net.ipv4.tcp_keepalive_probes:设置TCP发送keepalive消息的次数

  • net.ipv4.tcp_keepalive_intvl:设置TCP发送keepalive消息的频率

  • net.ipv4.tcp_retries2:设置连接失败后重新尝试的最大次数

说明:通过配置TCP Keepalive和超时参数,确保长时间运行的连接保持稳定,减少因连接中断导致的性能损失

1.10  文件描述符和缓存优化

fs.file-max = 65536
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

作用:增加文件描述符限制和调整系统文件缓存大小,提高数据库读取和写入效率。

解析:

  • fs.file-max:设置系统最大文件描述符数

  • vm.dirty_background_ratio:设置系统脏页(尚未同步到磁盘的页)的最小百分比

  • vm.dirty_ratio:设置系统脏页的最大百分比

说明:通过增加文件描述符限制和调整系统文件缓存大小,可以优化数据库读写性能,提高系统整体性能

1.11 调整虚拟内存管理

vm.swappiness = 0

作用:优化虚拟内存管理,减少对交换空间的依赖

说明:设置vm.swappiness为0表示尽量使用物理内存,减少对交换空间的频繁使用,提高系统整体性能

1.12  调整内核崩溃和恢复策略

kernel.panic = 5
kernel.panic_on_oops = 1
kernel.core_pipe_limit = 0

作用: 配置内核崩溃和恢复策略,提高系统稳定性

说明: 通过调整这些参数,可以更好地应对内核崩溃和系统出现问题的情况,提高系统的稳定性和可靠性

1.13 调整网络连接追踪

net.nf_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max = 655350
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1200

作用: 优化网络连接追踪,提高系统网络性能

说明: 调整网络连接追踪相关参数,可以更好地适应大量网络连接的环境,提高系统网络性能

1.14 限制系统打开的端口范围

net.ipv4.ip_local_port_range = 1024 65535

作用: 限制系统打开的端口范围,提高系统安全性

说明: 通过限制可用端口范围,可以减少潜在的安全风险,提高系统安全性

2.  结语

深度调优数据库服务器性能需要综合考虑多个方面,包括网络安全、连接管理、资源利用等。合理配置 Linux 内核参数是提高数据库性能的关键缓解之一。通过这些深度调优,可以更好地发挥数据库在高负载环境下的性能潜力,实现数据库性能的巅峰状态。

be6bd52303a6cd208eb4dfa5c7bd6167.png

往期精彩回顾

1.  MySQL高可用之MHA集群部署

2.  mysql8.0新增用户及加密规则修改的那些事

3.  比hive快10倍的大数据查询利器-- presto

4.  监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库

5.  PostgreSQL主从复制--物理复制

6.  MySQL传统点位复制在线转为GTID模式复制

7.  MySQL敏感数据加密及解密

8.  MySQL数据备份及还原(一)

9.  MySQL数据备份及还原(二)

adc6af33e622b6079e4e0b97d7cb3524.png

扫码关注     

a10c772d58fa1fba6e9d7e5fbdace030.jpeg

101f11647fb8c95f391fdc7cbe1d6b65.png

e9a30f798bc4f6c2145111aa9e4d5c1a.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1222024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Django学习日志07

多表查询(跨表查询) 子查询:分步查询 链表查询:把多个有关系的表拼接成一个大表(虚拟表) inner join left join 展示左表所有数据数据,右表展示符合查询条件的数据,查询不到的用null填充 …

工程建设智慧施工云平台源码 智慧工地平台源码

智慧工地平台源码 工程建设智慧施工云平台源码 技术框架:微服务架构JavaSpring Cloud UniApp MySql 智慧工地平台是一种智慧型、系统性的工地信息化解决方案,它把现代信息技术融入到建设工程管理中,协调各方资源,优化施工过程&…

LeetCode题 338比特位计数,20有效的括号,415字符串相加

目录 338比特位计数 题目要求: 解题思路: 1、暴力穷举 代码: 2、N&(N - 1)公式求解 代码: 3、奇偶数性质解法: 代码: 20有效的括号 题目要求: 解题思路 …

react-router-dom 版本6.18.0中NavLink的api和属性介绍

React Router 是一个基于 React 的路由库,它可以帮助我们在 React 应用中实现页面的切换和路由的管理。而 NavLink 则是 React Router 中的一个组件,它可以帮助我们实现导航栏的样式设置和路由跳转。 在 React Router 版本6.18.0 中,NavLink…

python时间变化与字符串替换技术及读JSON文件等实践笔记

1. 需求描述 根据预测出结果发出指令的秒级时间,使用时间戳,也就是设定时间(字符串)转为数字时间戳。时间计算转换过程中,出现单个整数(例如8点),按字符串格式补齐两位“08”。字符…

多媒体ffmpeg学习教程

多媒体ffmpeg 目前比较流行的音视频文件为:MP4 flv m3u8 ffmpeg ffmpeg ffplay ffprobe ffserverffmpeg -i INPUT -vf "split [main][tmp]; [tmp] cropiw:ih/2:0:0, vflip [flip];[main][flip] overlay0:H/2" OUTPUTffmpeg -i 2022.mp4 -vcodec mpeg4 -b:…

酷柚易汛ERP - 通用设置操作指南

1、系统设置 对系统进行初步设置,如系统LOGO、站点名称、备案号、版权信息、尾部信息及系统相关的一些基础设置 2、应用/小程序配置 对系统移动端进行相关配置 3、短信配置 对系统短信进行配置,此配置用于移动端一些通知类信息发送【目前仅支持阿里云…

PostgreSQL按月计算每天值的累加

要按月计算每天值的累加,您可以使用PostgreSQL中的日期函数和窗口函数。下面是一个示例查询,假设您有一个名为"table_name"的表,其中包含一个日期列"date_column"和一个数值列"value_column": SELE…

【Android】带下划线的TextView

序言 我们有时候需要一个类似这样的显示,上面是文字,下面是一条线 这样的显示效果是TextView实现不了的,需要我们自己进行修改一下。 实现 创建一个UnderlineTextView,继承系统的TextView class UnderlineTextView(mContext…

spider 网页爬虫中的 AWS 实例数据获取问题及解决方案

前言 AAWS实例数据对于自动化任务、监控、日志记录和资源管理非常重要。开发人员和运维人员可以通过AWS提供的API和控制台访问和管理这些数据,以便更好地管理和维护他们在AWS云上运行的实例。然而,在使用 spider 框架进行网页爬取时,我们常常…

【Kingbase FlySync】界面化管控平台:2.配置数据库同步之KES>KES

【Kingbase FlySync】界面化管控平台:3.配置数据库同步之KES->KES 部署KES数据库到KES数据库同步服务1.登录KFS管理平台2.开始配置数据节点信息(1)配置node1数据节点(2)配置node2数据节点 3.KFS拓扑图配置4.开始部署5.启动同步程序并查验是否运行正常 测试同步1.从node1数据…

nginx学习(2)

Nginx 反向代理案例2 1. 实现效果 实现效果:使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中 nginx 监听端口为 8001, 访问 http://127.0.0.1:8001/edu/ 直接跳转到 127.0.0.1:8081 访问 http://127.0.0.1:8001/vod/ 直接跳转到 …

TCP与UDP协议

TCP与UDP协议 1、TCP协议: 1、TCP特性: TCP 提供一种面向连接的、可靠的字节流服务。在一个 TCP 连接中,仅有两方进行彼此通信。广播和多播不能用于 TCP。TCP 使用校验和,确认和重传机制来保证可靠传输。TCP 给数据分节进行排序…

LAST论文翻译

《Read Ten Lines at One Glance: Line-Aware Semi-Autoregressive Transformer for Multi-Line Handwritten Mathematical Expression Recognition》论文翻译 文章目录 《Read Ten Lines at One Glance: Line-Aware Semi-Autoregressive Transformer for Multi-Line Handwritt…

深度学习中文汉字识别 计算机竞赛

文章目录 0 前言1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习中文汉字识别 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐&#xf…

Seaborn 回归(Regression)及矩阵(Matrix)绘图

Seaborn中的回归包括回归拟合曲线图以及回归误差图。Matrix图主要是热度图。 1. 回归及矩阵绘图API概述 seaborn中“回归”绘图函数共3个: lmplot(回归统计绘图):figure级regplot函数,绘图同regplot完全相同。(lm指lin…

学习笔记6——垃圾回收

学习笔记系列开头惯例发布一些寻亲消息 链接:https://baobeihuijia.com/bbhj/contents/3/190801.html java垃圾回收(stop the world) 专注于堆和方法区的垃圾回收,年轻代,老年代,永久代判断对象是否还存…

Audio PA 功能失败导致Android (A12)重启

1. 问题现象 做完一版os准备导入工厂生产,简称之位Ros(release),工厂有独立的用于验证其功能的os,简称Fos。出厂之前,需要做Fos到Ros的切换。然而,在切到Ros的时候,发现有低概率的设…

linux 服务器进程、端口查找,nginx 配置日志查找,lsof 命令详解

一 、根据端口号 查看文件的部署位置 1.1 使用查看端口号对应的进程信息 方式一 : 使用netstat命令 netstat -tuln | grep 端口号-t:显示TCP连接 -u:显示UDP连接 -l:仅显示监听状态的连接 -n:以数字形式显示端口…

Vellum —— Constraint 约束

目录 Stretch Bend Pin Drag 解算器对DOP外节点的约束属性,只会读取起始帧的值; Stretch 保持点间的初始距离; Stiffness 越高的stiffness,就需要越多的迭代来收敛,如constraint iterations或substeps(子步会更好)…