适配所有数据库的OS 一键优化神器
#!/bin/bash # 文件: db_os_optimize.sh # 功能: 操作系统参数优化数据库场景专用 # 兼容: CentOS/RHEL 7/Ubuntu 18.04/Debian 9 # 说明: 需root权限执行优化项包含网络、内存、文件描述符、安全、IO等 ############################################################################## # 配置区可根据实际需求调整 ############################################################################## TARGET_USER${1:-root} # 目标用户默认root TIME_ZONEAsia/Shanghai # 系统时区 SWAPPINESS0 # 禁用Swap数据库推荐 MAX_OPEN_FILES655360 # 最大文件描述符 MAX_PROCESS655360 # 最大进程数 FIREWALL_ACTIONopen # 防火墙动作open(开放常用端口)/close(关闭)/keep(保持不变) DB_PORT54321 # 数据库端口需开放时使用 ############################################################################## # 工具函数 ############################################################################## # 日志输出带时间戳 log() { echo [$(date %Y-%m-%d %H:%M:%S)] [$1] $2 } # 错误退出 error_exit() { log ERROR $1 exit 1 } # 备份配置文件 backup_conf() { local conf_path$1 local backup_path${conf_path}.bak.$(date %Y%m%d%H%M%S) if [ -f $conf_path ]; then cp -p $conf_path $backup_path || error_exit 备份$conf_path失败 log INFO 已备份配置文件: $backup_path fi } # 检查命令是否存在 command_exist() { command -v $1 /dev/null 21 } ############################################################################## # 前置检查 ############################################################################## # 检查root权限 if [ $(id -u) -ne 0 ]; then error_exit 脚本必须以root用户执行当前用户: $(whoami) fi # 检查目标用户是否存在 if ! id -u $TARGET_USER /dev/null 21; then log WARN 目标用户$TARGET_USER不存在是否创建(y/n默认n) read -r create_user if [ $create_user y ] || [ $create_user Y ]; then useradd -m -s bin/bash $TARGET_USER || error_exit 创建用户$TARGET_USER失败 log INFO 已创建目标用户: $TARGET_USER else error_exit 目标用户$TARGET_USER不存在脚本退出 fi fi # 检查系统发行版 if [ -f etc/redhat-release ]; then OS_TYPErhel elif [ -f etc/lsb-release ] || [ -f etc/debian_version ]; then OS_TYPEdebian else error_exit 不支持的操作系统发行版 fi log INFO 开始执行操作系统参数优化目标用户: $TARGET_USER系统类型: $OS_TYPE ############################################################################## # 1. 备份关键配置文件 ############################################################################## log INFO 开始备份配置文件... backup_conf /etc/sysctl.conf backup_conf /etc/security/limits.conf backup_conf /etc/ssh/sshd_config backup_conf /etc/bashrc ############################################################################## # 2. 内核参数优化sysctl.conf ############################################################################## log INFO 优化内核参数... SYSCTL_MARKER#add by kingbase (enhanced) # 检查是否已添加优化配置避免重复 if ! grep -q ^$SYSCTL_MARKER /etc/sysctl.conf; then cat etc/sysctl.conf EOF $SYSCTL_MARKER # 共享内存优化数据库核心需求 kernel.shmmax 4294967296 # 最大共享内存段4GB根据物理内存调整 kernel.shmall 1048576 # 共享内存总页数4GB/4KB1048576 kernel.shmmni 8192 # 最大共享内存段数 kernel.sem 5010 64128000 50100 1280 # 信号量配置 # 文件系统优化 fs.file-max $MAX_OPEN_FILES # 系统最大打开文件数 fs.aio-max-nr 1048576 # 异步IO最大请求数 # 内存优化 vm.overcommit_memory 2 # 禁止过度内存分配 vm.overcommit_ratio 90 # 内存过度分配比例物理内存90% vm.swappiness $SWAPPINESS # 禁用Swap0优先使用物理内存 vm.dirty_background_ratio 5 # 后台刷脏页阈值5% vm.dirty_ratio 10 # 强制刷脏页阈值10% vm.dirty_expire_centisecs 3000 # 脏页过期时间30秒 # 网络优化提升并发和连接稳定性 net.ipv4.ip_local_port_range 9000 65500 # 本地端口范围 net.core.somaxconn 65535 # 最大监听队列长度 net.core.netdev_max_backlog 65535 # 网卡接收队列最大长度 net.ipv4.tcp_max_syn_backlog 65535 # TCP半连接队列长度 net.ipv4.tcp_tw_reuse 1 # 复用TIME_WAIT状态的端口 net.ipv4.tcp_tw_recycle 0 # 禁用TCP连接回收避免NAT环境问题 net.ipv4.tcp_fin_timeout 30 # TIME_WAIT超时时间30秒 net.ipv4.tcp_keepalive_time 600 # TCP保活时间10分钟 net.ipv4.tcp_keepalive_intvl 30 # 保活探测间隔30秒 net.ipv4.tcp_keepalive_probes 10 # 保活探测次数 net.ipv4.tcp_max_tw_buckets 200000 # 最大TIME_WAIT数量 EOF # 应用内核参数忽略临时失效的参数 sysctl -p /dev/null 21 || log WARN 部分内核参数需重启系统生效 else log INFO 内核参数已优化跳过重复添加 fi ############################################################################## # 3. 用户资源限制优化limits.conf ############################################################################## log INFO 优化用户资源限制... LIMITS_MARKER#add by kingbase (enhanced) if ! grep -q ^$LIMITS_MARKER /etc/security/limits.conf; then cat etc/security/limits.conf EOF $LIMITS_MARKER # 全局限制 * soft nofile $MAX_OPEN_FILES * hard nofile $MAX_OPEN_FILES * soft nproc $MAX_PROCESS * hard nproc $MAX_PROCESS * soft core unlimited * hard core unlimited * soft memlock unlimited * hard memlock unlimited # root用户限制 root soft nofile $MAX_OPEN_FILES root hard nofile $MAX_OPEN_FILES root soft nproc $MAX_PROCESS root hard nproc $MAX_PROCESS # 目标用户专项限制 $TARGET_USER soft nofile $MAX_OPEN_FILES $TARGET_USER hard nofile $MAX_OPEN_FILES $TARGET_USER soft nproc $MAX_PROCESS $TARGET_USER hard nproc $MAX_PROCESS $TARGET_USER soft memlock unlimited $TARGET_USER hard memlock unlimited EOF # 清除limits.d下的默认限制避免覆盖 if [ -d /etc/security/limits.d ]; then find /etc/security/limits.d -name *.conf -exec sed -i /^\*.*nofile\|^\*.*nproc/d {} \; fi else log INFO 用户资源限制已优化跳过重复添加 fi ############################################################################## # 4. SSH服务优化sshd_config ############################################################################## log INFO 优化SSH服务配置... SSHD_CONF/etc/ssh/sshd_config # 匹配行首可能的空白字符注释原有配置 sed -i s/^[[:space:]]*GSSAPIAuthentication/#GSSAPIAuthentication/g $SSHD_CONF sed -i s/^[[:space:]]*UseDNS/#UseDNS/g $SSHD_CONF sed -i s/^[[:space:]]*UsePAM/#UsePAM/g $SSHD_CONF sed -i s/^[[:space:]]*PasswordAuthentication/#PasswordAuthentication/g $SSHD_CONF # 添加优化配置确保生效 cat $SSHD_CONF EOF # 优化项add by kingbase GSSAPIAuthentication no # 禁用GSSAPI认证加速登录 UseDNS no # 禁用DNS反向解析加速登录 UsePAM yes # 启用PAM认证 PasswordAuthentication yes # 允许密码登录根据需求调整 MaxStartups 100 # 最大并发连接尝试数 MaxSessions 100 # 最大并发会话数 EOF # 重启SSH服务兼容systemd和sysvinit if command_exist systemctl; then systemctl restart sshd /dev/null 21 || log WARN 重启sshd服务失败systemd elif command_exist service; then service sshd restart /dev/null 21 || log WARN 重启sshd服务失败sysvinit fi ############################################################################## # 5. Shell环境优化bashrc ############################################################################## log INFO 优化Shell环境... BASHRC_CONF/etc/bashrc SHELL_MARKER#add by kingbase (enhanced) if ! grep -q ^$SHELL_MARKER $BASHRC_CONF; then cat $BASHRC_CONF EOF $SHELL_MARKER # 启用别名扩展 shopt -s expand_aliases # 历史命令优化 HISTSIZE1000000 # 历史命令记录条数 HISTFILESIZE2000000 # 历史文件最大行数 HISTTIMEFORMAT%Y-%m-%d %H:%M:%S # 历史命令带时间戳 HISTCONTROLignoredups:ignorespace # 忽略重复命令和空格开头的命令 # 环境变量优化 export LC_ALLC # 统一字符集 export LANGC export TMOUT0 # 禁用自动退出 EOF else log INFO Shell环境已优化跳过重复添加 fi ############################################################################## # 6. Cron权限优化cron.allow ############################################################################## log INFO 配置Cron权限... CRON_ALLOW/etc/cron.allow # 确保文件存在且目标用户已添加 touch $CRON_ALLOW chmod 600 $CRON_ALLOW if ! grep -q ^$TARGET_USER$ $CRON_ALLOW; then echo $TARGET_USER $CRON_ALLOW log INFO 已添加$TARGET_USER到cron.allow else log INFO $TARGET_USER已在cron.allow中跳过 fi ############################################################################## # 7. 关键系统优化数据库场景必做 ############################################################################## # 7.1 关闭透明大页THP数据库性能杀手 log INFO 关闭透明大页THP... THP_DISABLE/etc/systemd/system/disable-thp.service if [ ! -f $THP_DISABLE ]; then cat $THP_DISABLE EOF [Unit] DescriptionDisable Transparent Huge Pages (THP) Aftersysinit.target local-fs.target [Service] Typeoneshot ExecStart/bin/sh -c echo never /sys/kernel/mm/transparent_hugepage/enabled echo never /sys/kernel/mm/transparent_hugepage/defrag [Install] WantedBymulti-user.target EOF # 启用并立即执行 systemctl daemon-reload systemctl enable disable-thp /dev/null 21 systemctl start disable-thp /dev/null 21 fi # 临时关闭立即生效 echo never /sys/kernel/mm/transparent_hugepage/enabled 2/dev/null echo never /sys/kernel/mm/transparent_hugepage/defrag 2/dev/null # 7.2 关闭SELINUX避免权限冲突 log INFO 调整SELINUX... if [ $OS_TYPE rhel ]; then sed -i s/^SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config setenforce 0 /dev/null 21 # 临时关闭 fi # 7.3 防火墙配置 log INFO 配置防火墙动作: $FIREWALL_ACTION... if command_exist firewall-cmd; then # CentOS/RHEL防火墙 case $FIREWALL_ACTION in open) firewall-cmd --permanent --add-port$DB_PORT/tcp firewall-cmd --permanent --add-port22/tcp firewall-cmd --reload /dev/null 21 log INFO 已开放端口: 22, $DB_PORT ;; close) systemctl stop firewalld systemctl disable firewalld /dev/null 21 log INFO 已关闭防火墙 ;; keep) log INFO 保持防火墙当前配置 ;; esac elif command_exist ufw; then # Ubuntu/Debian防火墙 case $FIREWALL_ACTION in open) ufw allow 22/tcp ufw allow $DB_PORT/tcp ufw reload /dev/null 21 log INFO 已开放端口: 22, $DB_PORT ;; close) ufw disable /dev/null 21 log INFO 已关闭防火墙 ;; keep) log INFO 保持防火墙当前配置 ;; esac fi # 7.4 设置系统时区 log INFO 设置系统时区为: $TIME_ZONE timedatectl set-timezone $TIME_ZONE /dev/null 21 # 同步时间需安装ntp/chrony if command_exist chronyd; then systemctl start chronyd systemctl enable chronyd /dev/null 21 elif command_exist ntpd; then systemctl start ntpd systemctl enable ntpd /dev/null 21 fi # 7.5 磁盘IO调度器优化根据磁盘类型自动适配 log INFO 优化磁盘IO调度器... for disk in $(lsblk -dn -o NAME | grep -v loop); do disk_path/sys/block/$disk/queue/scheduler if [ -f $disk_path ]; then # SSD/NVMe用mq-deadline机械硬盘用mq-deadline通用最优 echo mq-deadline $disk_path 2/dev/null log INFO 磁盘$disk IO调度器已设置为: mq-deadline fi chmod x db_os_optimite.sh # 7.6 禁用文件系统atime减少磁盘IO root ./db_os_optimite.sh ./db_os_optimite.sh mydbuser sed -i s/\(defaults\)/\1,noatime/ /etc/fstab 2/dev/null mount -o remount / /dev/null 21 # 临时生效重启后完全生效 # 7.7 关闭自动更新避免系统不稳定 log INFO 关闭系统自动更新... if [ $OS_TYPE rhel ]; then systemctl stop yum-cron /dev/null 21 systemctl disable yum-cron /dev/null 21 elif [ $OS_TYPE debian ]; then systemctl stop unattended-upgrades /dev/null 21 systemctl disable unattended-upgrades /dev/null 21 fi ############################################################################## # 执行结果提示 ############################################################################## log INFO 操作系统参数优化完成 log INFO log INFO 需立即生效的操作 log INFO 1. 重新登录Shell用户资源限制生效 log INFO 2. 重启系统部分内核参数、IO调度器完全生效 log INFO log INFO 优化日志和配置备份已保留路径 log INFO - 配置备份/etc/xxx.conf.bak.2025xxxx log INFO - 脚本执行日志可通过终端输出回溯 log INFO 使用说明1. 赋予执行权限chmod x enhance_os_param.sh2. 执行脚本默认目标用户kingbase./enhance_os_param.sh3. 自定义目标用户./enhance_os_param.sh mydbuser4. 执行后建议重新登录Shell 重启系统确保所有优化生效注意事项• 脚本仅适用于数据库服务器生产环境建议先在测试机验证• 防火墙开放端口可根据实际需求修改DB_PORT变量• 共享内存参数kernel.shmmax可根据物理内存调整建议设为物理内存的50%-80%• 若需启用SELINUX需手动调整SELINUXpermissive并配置数据库相关策略

相关新闻

PPTTimer:Windows平台终极演讲计时器,让演示时间掌控如呼吸般自然

PPTTimer:Windows平台终极演讲计时器,让演示时间掌控如呼吸般自然

PPTTimer:Windows平台终极演讲计时器,让演示时间掌控如呼吸般自然 【免费下载链接】ppttimer 一个简易的 PPT 计时器 项目地址: https://gitcode.com/gh_mirrors/pp/ppttimer 在重要演讲或PPT演示中,时间管理是每位演讲者必须面对的挑…

2026/10/12 18:36:32 阅读更多 →
抖音直播录制终极指南:一键自动录制40+平台直播内容

抖音直播录制终极指南:一键自动录制40+平台直播内容

抖音直播录制终极指南:一键自动录制40平台直播内容 【免费下载链接】DouyinLiveRecorder 可循环值守和多人录制的直播录制软件,支持抖音、TikTok、Youtube、快手、虎牙、斗鱼、B站、小红书、pandatv、sooplive、flextv、popkontv、twitcasting、winktv、…

2026/10/9 13:21:35 阅读更多 →
TranslucentTB开机启动完全指南:解决灰色选项与注册表配置难题

TranslucentTB开机启动完全指南:解决灰色选项与注册表配置难题

TranslucentTB开机启动完全指南:解决灰色选项与注册表配置难题 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB…

2026/10/4 15:48:51 阅读更多 →

最新新闻

C# Windows窗体计算器源代码实战:事件驱动与decimal精度处理

C# Windows窗体计算器源代码实战:事件驱动与decimal精度处理

简介:一份基于C#与Windows Forms的“计算器—标准型”完整源程序包,面向初学C#桌面开发的读者,可帮助理解窗体界面搭建、按钮事件响应与四则运算逻辑实现。包内含56个文件,压缩包仅1.21MB,主要包含cs源码文件、Designe…

2026/10/14 22:13:36 阅读更多 →
在线字典学习实战:MATLAB实现与避坑指南

在线字典学习实战:MATLAB实现与避坑指南

简介:一份面向MATLAB用户的在线字典学习代码包,聚焦文本、音频等序列数据的字典基在线更新,适合希望系统掌握在线学习与无监督学习的算法实践者。代码包共5个文件,以m脚本为主,另含1个mat数据文件,压缩后仅…

2026/10/14 22:13:36 阅读更多 →
商业模式画布不是填空:四个价值环节动态推演

商业模式画布不是填空:四个价值环节动态推演

1. 一张画布贴不满创业这件事我见过太多团队,围着一张大纸贴了半小时便利贴,把九个格子填得满满当当,然后拍张照发到群里,配一句“商业模式定了”。过了三个月,产品做出来了,客户不买账;渠道铺开…

2026/10/14 22:13:36 阅读更多 →
RCWA光栅衍射效率计算:原理、Python实现与5大避坑指南

RCWA光栅衍射效率计算:原理、Python实现与5大避坑指南

简介:本资源面向光学仿真初学者、光子学方向研究生及光栅器件设计工程师,提供基于严格耦合波分析(RCWA)方法计算一维光栅衍射效率的完整实践材料,解决周期性微纳结构光学响应建模与定量分析的核心问题。压缩包共2个文件…

2026/10/14 22:13:36 阅读更多 →
CSharpGL:面向桌面端的高性能OpenGL C#封装实践

CSharpGL:面向桌面端的高性能OpenGL C#封装实践

1. 为什么是CSharpGL?——一个被低估的OpenGL C#封装层在C#生态里谈图形渲染,多数人第一反应是Unity、MonoGame,或者近年兴起的AvaloniaSkiaSharp组合。但如果你正面对一个明确需求:在WinForms或WPF窗体中嵌入高性能、可精细控制的…

2026/10/14 22:13:36 阅读更多 →
TCP粘包与半包问题的三种生产级解决方案

TCP粘包与半包问题的三种生产级解决方案

1. 项目概述:为什么“粘包”和“半包”是网络编程里最常被低估的坑你写完一个TCP服务端,本地测试一切正常,一上测试环境就发现客户端收不到完整消息,或者一条消息被拆成两段、三段,甚至几条消息黏在一起发过来——日志…

2026/10/14 22:12:34 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →