银河麒麟操作系统模板机检查及优化方案
第1章、 银河麒麟系统模板机基本信息
1.1、 KylinV10-SP3.aarch64模版机
操作系统版本 KylinV10-SP3
架构 ARM架构的64位版本
内核版本 4.19.90-89.11.v2401.ky10.aarch64
1.2、 KylinV10-SP3.x86_64模版机
操作系统版本 KylinV10-SP3
架构 X86架构的64位版本
内核版本 4.19.90-52.22.v2207.ky10.x86_64
第2章、 系统优化检查项
2.1、 防火墙策略
系统默认开启了防火墙服务,检查是否配置了防火墙策略若没有配置建议关闭防火墙服务,启用硬件或者云防火墙替代软件防火墙功能,在关闭firewalld.service服务之后,性能会有一定的提升;若配置了防火墙策略检查firewalld.servic服务是否永久生效,并备份一份防火墙策略。
2.1.1、 防火墙服务启停
systemctl status firewalld.service #检查防火墙是否启用
systemctl start firewalld.service #启动防火墙
systemctl stop firewalld.service #停止防火墙
systemctl enable firewalld #设置开机自启动
systemctl disable firewalld #停止开启自启动
2.1.2、 检查当前防火墙策略
iptables -L
2.1.3、 检查防火墙策略是否永久生效
cat /etc/rc.d/rc.local #防火墙策略加入开机自启动文件中
chmod 755 /etc/rc.d/rc.local #自启动文件授权
2.1.4、 备份防火墙策略
iptables-save > /tmp/iptables.bak
2.1.5、 检查结果及优化建议
(x86_64):系统侧未配置防火墙策略,当前防火墙处于开启状态,检查结果正常,建议关闭防火墙。
(aarch64):系统侧未配置防火墙策略,当前防火墙处于关闭状态,检查结果正常,暂无建议。
2.2、 SELinux服务
SELinux会对大部分系统操作进行权限检查,增加额外开销,导致关机时间变长,所以建议关闭SELinux。
SELinux的三种模式:
Enforcing:强制模式。代表SELinux在运行中,且已经开始限制进程和资源之间的验证关系。
Permissive:宽容模式。代表SELinux在运行中,不过不会限制进程和资源之间的验证关系,即使验证不正确,进程仍可以对文件进行操作。不过如果验证不正确会发出警告。
Disabled:关闭模式。SELinux并没有实际运行。
2.2.1、 检查SELinux服务状态
getenforce
2.2.2、 临时修改SELinux
setenforce 0 #转换为Permissive宽容模式
setenforce 1 #转换为Enforcing强制模式
2.2.3、 永久关闭SELinux
vi /etc/selinux/config #编辑SELinux服务配置文件
SELINUX=disabled #修改SELINUX参数为disabled
reboot #重启生效
2.2.4、 检查结果及优化建议
(x86_64):系统侧未开启SELinux,检查结果正常,暂无建议。
(aarch64):系统侧未开启SELinux,检查结果正常,暂无建议。
2.3、 Atd服务
系统默认开启了atd服务, atd服务可根据需要选择是否开启。如果关闭了atd服务,则可以使用系统默认开启的crond计划任务服务。在关闭这些服务之后,性能通常会有一定的提升。
atd 服务是用来处理 at 命令的任务的守护进程,at 命令允许用户预定在特定时间执行一次的任务。
at是Linux中默认安装的任务调度工具,它包含三个核心组件:
atd守护进程:在后台运行,负责执行排队的任务。
at命令:用于创建和管理延迟任务。
atq命令:用于查看等待执行的任务队列。
2.3.1、 Atd服务启停
systemctl status atd #检查防火墙是否启用
systemctl start atd #启动防火墙
systemctl stop atd #停止防火墙
systemctl enable atd #设置开机自启动
systemctl disable atd #停止开启自启动
2.3.2、 检查当前Atd服务指定任务
at -l #查看所有的指定任务
2.3.3、 检查结果及优化建议
(x86_64):系统侧未配置定时任务,当前Atd服务处于开启状态,检查结果正常,建议关闭Atd服务。
(aarch64):系统侧未配置定时任务,当前Atd服务处于开启状态,检查结果正常,建议关闭Atd服务。
2.4、 Irqbalance服务
Irqbalance是一个用于自动分配和平衡系统中断请求(IRQs)的工具,Irqbalance主要功能是能够把压力均匀的分配到各个CPU核心上,从而减少中断处理过程中的负载不均衡问题,对提升性能有很大的帮助。
2.4.1、 Irqbalance服务启停
systemctl status irqbalance #检查服务是否启用
systemctl start irqbalance #启动服务
systemctl stop irqbalance #停止服务
systemctl enable irqbalance #设置开机自启动
systemctl disable irqbalance #停止开启自启动
2.4.2、 Irqbalance服务配置文件
/etc/sysconfig/irqbalance
2.4.3、 检查结果及优化建议
(x86_64):系统侧已开启Irqbalance,检查结果正常,暂无建议。
(aarch64):系统侧已开启Irqbalance,检查结果正常,暂无建议。
2.5、 Swap交换分区
在Linux系统中,不分配swap分区并不是一个常见的操作,swap分区在系统内存不足时,主要用于临时存储数据。因次swap分区或文件(swapfile)对于系统的稳定性和性能至关重要。不使用swap可能会对系统产生负面影响,特别是在高负载或内存密集型应用运行时。但在部署Kubernetes (k8s)服务中建议关闭Swap分区,Kubernetes的资源管理和调度机制需要基于精确的内存使用来工作,而swap的引入会打破这种可控性;以及避免不稳定的容器行为,swap可能导致容器异常或崩溃。其 kubelet组件(负责管理节点上的Pod生命周期、容器健康检查及资源监控等任务)已默认不支持在有可激活 swap 的节点上运行。
2.5.1、 Swap分区大小分配建议
根据服务器的物理内存大小为参照:
4GB 或 4GB 以下内存的系统,建议分配2GB交换空间;
大于 4GB 而小于 16GB 内存的系统,建议分配4GB交换空间;
大于 16GB 而小于 64GB 内存的系统,建议分配8GB交换空间;
大于 64GB 而小于 256GB 内存的系统,建议分配16GB交换空间。
2.5.2、 检查是否分配Swap交换分区
free -h
2.5.3、 检查结果及优化建议
(x86_64):系统侧已配置Swap分区,检查结果正常,暂无建议。
(aarch64):系统侧已配置Swap分区,检查结果正常,暂无建议。
2.6、 Boot引导分区
在Linux系统中,分配boot分区的大小通常取决于你的具体需求和使用的引导加载程序。一般来说,如果你的系统使用的是UEFI而非传统的BIOS引导方式,那么传统的MBR分区表和boot分区就不再必需了。这是因为UEFI可以直接从EFI系统分区(ESP)加载内核和引导加载程序,而不是依赖于传统的MBR和boot分区。
2.6.1、 Boot分区大小分配建议
下面是一些关于boot分区大小和分配的建议:
1. UEFI系统
如果你的系统使用的是UEFI引导方式,推荐的做法是创建一个EFI系统分区(ESP),
通常这个分区的大小为200-500MB就足够了。这个分区包含了引导加载程序(如GRUB2的EFI版本)以及其他必要的文件。
2. BIOS/CSM(兼容支持模块)系统
如果你的系统使用的是传统的BIOS引导方式或者需要通过CSM来启动Windows等操作系统,那么你可能仍然需要传统的boot分区。在这种情况下,推荐boot分区的大小为50-100MB。
2.6.2、 查看系统启动模式
2.6.2.1、 方法一
如果该目录存在并且包含文件或子目录,则说明系统是以UEFI模式启动的。
如果该目录不存在,则说明系统是以BIOS模式启动的。
ls /sys/firmware/efi/
2.6.2.1.1、 方法二
如果命令成功执行并返回了详细信息,说明系统是以UEFI模式启动的。
如果命令失败或报告找不到该命令(如提示“command not found”),则可能系统没有安装efibootmgr包,或者系统是以BIOS模式启动的。
efibootmgr -v
2.6.3、 检查是否分配Boot引导分区
df -h /boot
2.6.4、 检查结果及优化建议
(x86_64): 系统以BIOS模式启动,已配置/boot分区,检查结果正常,暂无建议。
(aarch64):系统以UEFI模式启动,已配置/boot分区和/boot/efi分区,检查结果正常,暂无建议。
2.7、 本地DNS缓存服务
当系统中第三方应用频繁异常访问特定域名(如DNS解析超时、重复请求等)时,可通过启用本地DNS缓存服务(dnsmasq)优化解析效率,减少网络延迟及异常请求。
2.7.1、 DNS服务启停
systemctl status dnsmasq.service #检查服务是否启用
systemctl start dnsmasq.service #启动服务
systemctl stop dnsmasq.service #停止服务
systemctl enable dnsmasq.service #设置开机自启动
systemctl disable dnsmasq.service #停止开启自启动
2.7.2、 查看DNS缓存状态
resolvectl statistics
2.7.3、 刷新DNS缓存
systemd-resolve --flush-caches
2.7.4、 检查结果及优化建议
(x86_64): 系统已安装DNS服务,未启用DNS服务,检查结果正常,暂无建议。
(aarch64):系统未安装DNS服务,检查结果正常,暂无建议。
2.8、 时间同步服务
在Linux系统中,chronyd 是一个用于同步系统时间的网络时间协议(NTP)客户端。它比传统的 ntpd 客户端提供了更多的功能和更好的性能。
2.8.1、 检查时间同步服务状态
systemctl status chronyd #检查服务是否启用
systemctl start chronyd #启动服务
systemctl stop chronyd #停止服务
systemctl enable chronyd #设置开机自启动
systemctl disable chronyd #停止开启自启动
2.8.2、 配置文件
/etc/chrony.conf
2.8.3、 检查chronyd的状态和查看同步状态
chronyc sources -v
2.8.4、 检查结果及优化建议
(x86_64): 系统已配置华为云时间同步服务器,同步状态正常,暂无建议。
(aarch64):系统已配置华为云时间同步服务器,同步状态正常,暂无建议。
2.9、 内核参数优化
2.9.1、 内核优化常用命令
sysctl -a #查看所有的内核参数
sysctl -w fs.file-max = 655360 #临时修改内核参数
/etc/sysctl.conf #永久修改内核参数
sysctl -p #重新加载内核参数
sysctl fs.file-max #验证参数生效
2.9.2、 常见的内核参数
2.9.2.1、 系统可以打开的文件描述符数量
2.9.2.1.1、 含义
fs.file-max 是 Linux 内核中控制系统级别最大文件句柄数(File Descriptors, FD)的关键参数,直接影响系统能同时打开的文件、Socket、管道等资源的总数。超过限制时,系统会报错 Too many open files,默认值通常较大9223372036854775807。
2.9.2.1.2、 注意事项
降低fs.file-max值:导致服务无法处理高并发请求。
增加fs.file-max值:占用额外内核内存(每个句柄约占用1KB)。
2.9.2.1.3、 查看当前已使用的值
cat /proc/sys/fs/file-nr
2.9.2.1.4、 参数调整
fs.file-max=655360
2.9.2.2、 TCP连接数
2.9.2.2.1、 含义
net.core.somaxconn 用于控制socket监听队列的大小。这个参数决定了在三次握手完成但应用程序尚未调用 accept() 函数时,可以排队的最大连接数。默认值通常是512。
2.9.2.2.2、 注意事项
降低net.core.somaxconn值:在高并发环境下,如果somaxconn设置得不够,那么服务器将无法接受超过这个限制的并发连接请求。这可能导致在高流量时出现连接被拒绝的情况。
增加net.core.somaxconn值:增加somaxconn可以提高并发处理能力,但也会消耗更多的内存资源。在高负载情况下,这可能导致系统资源紧张。
2.9.2.2.3、 查看当前已使用的值
/bin/netstat -nat | grep tcp | grep -v LISTEN | wc -l
2.9.2.2.4、 参数调整
net.core.somaxconn=10240
2.9.2.3、 TCP超时时间
2.9.2.3.1、 含义
net.ipv4.tcp_tw_timeout是一个与TCP连接相关的内核参数,它用于定义TCP连接在TIME_WAIT状态下的超时时间(以秒为单位)。当TCP连接关闭后,它会进入TIME_WAIT状态,等待足够的时间以确保网络中的任何延迟数据包都能被丢弃,从而避免端口重用时可能出现的连接问题。默认通常是60秒。
2.9.2.3.2、 注意事项
降低net.ipv4.tcp_tw_timeout值:如果你发现系统在处理大量短连接时遇到资源瓶颈,可以尝试减小值。例如,将其设置为30秒。
增加net.ipv4.tcp_tw_timeout值:在高延迟网络环境情况下,较长的超时时间可避免因网络延迟导致的误判,确保连接稳定性。
2.9.2.3.3、 参数调整
net.ipv4.tcp_tw_timeout=60
2.9.2.4、 禁用IPv6
如果不需要可以禁用IPv6减少系统资源和网络配置复杂度,默认开启。
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
2.9.2.5、 总进程数
2.9.2.5.1、 含义
它定义了系统可以同时存在的进程ID(PID)的最大数量。每个进程在Linux系统中都有一个唯一的PID,用于标识和管理进程。当系统中的进程数量接近或达到kernel.pid_max的值时,系统将无法创建新的进程,除非某些进程结束并被回收。默认值通常是4194304。
2.9.2.5.2、 注意事项
降低kernel.pid_max值:如果系统经常达到PID上限,新的进程将无法创建,导致系统不稳定。
增加kernel.pid_max值:过多的PID可能导致系统在进程表管理上消耗更多内存。在高负载情况下,频繁的PID分配和回收可能导致性能下降。
2.9.2.5.3、 查看当前已使用的值
top 命令的输出中的“Tasks”行来查看进程总数
top
2.9.2.5.4、 参数调整
kernel.pid_max=32768 #示例值,可以根据需要调整,但通常不应超过2^22或4194304
2.9.2.6、 总线程数
2.9.2.6.1、 含义
它定义了系统中可创建的最大线程数。默认情况下,这个值可能不足以满足高负载环境下的需求,尤其是在需要大量并发线程的应用场景中,如数据库服务器、大规模数据处理等。系统资源:增加 kernel.threads-max 会消耗更多的内存资源。确保你的系统有足够的内存来支持增加的线程数,默认值15291
2.9.2.6.2、 注意事项
降低kernel.threads-max值:那么在高并发或者需要大量线程的应用场景下,系统可能会因为无法创建足够的线程而无法充分利用资源,达到预期的性能水平。
增加kernel.threads-max值:系统将能够创建更多的线程。这会消耗更多的内存和CPU资源,特别是在高负载的情况下,如果系统达到了内存限制,过多的线程可能导致内存不足,从而引发系统稳定性问题,如频繁的OOM(Out of Memory)错误。
2.9.2.6.3、 查看当前已使用的值
top 命令按H键切换到线程模式,输出中的“Threads”行来查看线程总数
top
2.9.2.6.4、 参数调整
kernel.threads-max=4194304
第3章、 总体检查结果和建议
|
检查项 |
检查结果 |
本次调整说明 |
建议 |
|
防火墙策略 |
(x86_64):系统侧未配置防火墙策略,当前防火墙处于开启状态; (aarch64):系统侧未配置防火墙策略,当前防火墙处于关闭状态。 |
将(x86_64)防火墙策略关闭。 |
将(x86_64)防火墙策略关闭。 |
|
SELinux服务 |
(x86_64):系统侧未开启SELinux; (aarch64):系统侧未开启SELinux 。 |
|
暂无建议。 |
|
Atd服务 |
(x86_64):系统侧未配置定时任务,当前Atd服务处于开启状态;(aarch64):系统侧未配置定时任务,当前Atd服务处于开启状态。 |
关闭Atd服务。 |
关闭Atd服务。 |
|
Irqbalance服务 |
(x86_64):系统侧已开启Irqbalance; (aarch64):系统侧已开启Irqbalance。 |
|
暂无建议。 |
|
Swap交换分区 |
(x86_64):系统侧已配置Swap分区; (aarch64):系统侧已配置Swap分区。
|
|
暂无建议。 |
|
Boot引导分区 |
(x86_64): 系统以BIOS模式启动,已配置/boot分区; (aarch64):系统以UEFI模式启动,已配置/boot分区和/boot/efi分区。
|
|
暂无建议。 |
|
本地DNS缓存服务 |
(x86_64): 系统未启用DNS服务。 (aarch64):系统未安装DNS服务。
|
|
暂无建议。 |
|
时间同步服务 |
(x86_64): 系统已配置华为云时间同步服务器,同步状态正常; (aarch64):系统已配置华为云时间同步服务器,同步状态正常。
|
|
暂无建议。 |

浙公网安备 33010602011771号