系统参数配置说明

最近更新时间:2024-09-19 15:24:51

我的收藏

第一章:操作系统组件

TencentOS Server 默认安装(Server 模式)仅安装了最基本的组件包(最小集),默认安装了 Server 组,满足 Server 场景下的最小需求,其他组件建议在安装完成后按需安装,相关组件和处理建议如下:
组(group)组件
默认安装
建议安装
说明
安装方式
Server 组
包含标准服务器 OS 的基础组件的最小集合,具体包括子组:
Container Management
Core
Hardware Support
Headless Management
Server product core;Standard
已默认安装
Base 组
标准安装下的基础组件,包括一些基础的工具和命令(例如 vim,wget,rsyslog,tcpdump,file 等)。
yum groupinstall -y Base
Minimal Install 组
包含最小安装下的一些基本组件(例如 kexec-tools相关组件)。
yum groupinstall -y 'Minimal Install'
基础静态库和中文支持
Glibc 和 zlib 的静态库,应用程序中可能需要的中文支持、以及其他的一些基础库(如 OpenIPMI)。
yum install -y glibc-static zlib-static glibc-langpack-zh OpenIPMI
必要维护工具
系统维护需要的一些独立的、必要的工具,如crash、iotop、sysstat 等。
yum install -y crash iotop sysstat traceroute dhcp-client
软件源(其他)
Epe l软件源。
yum install -y epel-release
TencentOS 自带工具
TencentOS 自研的部分实用工具。
yum install -y tencentos-tools tlinux-irqaffinity
Development Tools
包含基本的开发工具和基础库,例如 gcc,make、各种基础库等。
yum groupinstall -y 'Development Tools'
Perl 基础库和运行时
包含 Perl 程序运行所需的基础库、解释器、运行时组件。
yum groupinstall -y perl perl-web yum install -y perl-XML perl-JSON perl-Date
Python 基础库和运行时
包含 Python 程序运行所需的基础库、解释器、运行时组件。 Python2(2.7)和 Python3(3.6)可同时安装,TencentOS Server 3 默认使用 Python3。
yum groupinstall -y python-web yum install -y python2 python36
Clang(编译器)
Clang 编译器,ebpf 程序编译所需。
yum install -y clang
JDK(java运行时)
按需
Java 运行时. 腾讯有维护自研的 KonaJDK,可提供商业支持和服务。
yum install -y java-openjdk 如需使用 konaJDK,可使用如下命令安装:yum install -y java-11-konajdk
Legacy 网络管理工具
按需
旧的网络管理工具 network-scripts,提供ipup/ifdown,network service等旧的网络管理方式。当前 TencentOS Server 3 默认使用 NetworkManager 组件管理网络,使用 nmcli 工具集。
yum install -y network-scripts
nginx
按需
高并发网络服务器
yum install -y nginx
基础组件版本信息如下:
组件
TencentOS Server 3 (5.4.119)版本
默认安装
建议安装
Kernel
5.4.119
glibc
2.28-164
gcc
8.5.0-4
perl
5.26.3-420
Python
3.6.8/2.7.17
openjdk
1:1.8.0.332
按需
JDK(konajdk)
java-8-konajdk-8.0.9-1.1.322
按需
php
7.2.24-1
按需
Ruby
2.5.5-106
按需
Node.js
1:10.21.0-3
按需
golang
1.15.14-1
按需
clang
12.0.1-4
按需
mysql
8.0.21-1
按需
mariadb
3:10.3.27-3
按需
postgresql
10.15-1
按需
Nginx
1:1.14.1-9
按需
redis
5.0.3-2
按需
iptables
1.8.4-20
Openssh
8.0p1
samba
4.15.5-5
ethtool
5.8-7
Strace
5.7-3
vim
8.0.1763-19

第二章:系统盘分区

推荐系统盘大小为50G/100G,一般云服务器系统盘建议50G,物理机建议100G。
以系统盘100G为例,建议分区如下:
VG 命名
LV 命名
挂载点/文件系统名
容量标准
文件系统
备注
/dev/sda1
-
/boot/efi
600M
vfat
必须
/dev/sda2
-
/boot/
1G
xfs
必须
ts (/dev/sda3)
swap
swap分区
4GB
-
按需
root
-
-
64GB
xfs
必须
home
/home
/home
30GB
xfs
按需

第三章:系统服务

系统服务名称
服务描述
默认安装
建议
开启条件
crond.service
定时后台执行任务调度
开启
-
getty@.service
终端服务
开启
-
irqbalance.service
多处理器系统中分布硬件中断服务
开启
-
kdump.service
内核故障转储服务
开启
需要内核故障诊断信息搜集时打开
kpatch.service
启动时加载内核 patch 模块
开启
在有热补丁时使用
mcelog.service
硬件报警日志服务
关闭
物理机环境开启(虚机不开启)
rsyslog.service
系统日志服务
开启
-
sshd.service
ssh 服务
开启
-
sysstat.service
系统状态统计服务
开启
-
dm-event.socket
device-mapper 设备事件
关闭
系统使用 device mapper 设备
autovt@.service
虚拟终端
开启
-
abrt-ccpp.service
C / C ++ 问题收集
关闭
需要 abrt 提交时打开
abrtd.service
自动 bug 报告服务
关闭
需要 abrt 提交时打开
abrt-oops.service
内核 oops 异常信息收集工具
关闭
需要 abrt 提交时打开
abrt-pstoreoops.service
存储 oops 信息服务
关闭
需要 abrt 提交时打开
abrt-vmcore.service
vmcore 文件复制和处理服务
关闭
需要 abrt 提交时打开
abrt-xorg.service
xorg 信息异常收集
关闭
需要 abrt 提交时打开
arp-ethers.service
网络信息异常收集
关闭
需要 abrt 提交时打开
atd.service
at 服务
关闭
需要一次调度执行时打开
auditd.service
系统审计服务
开启
需要使用审计功能时打开
chronyd.service
时间同步服务
关闭
ntp 的替代
dm-event.service
device mapper 事件服务
关闭
使用 device mapper 设备时打开
ebtables.service
网桥过滤服务
关闭
链路层过滤规则需要时打开
firewalld.service
防火墙服务
关闭
需要防火墙规则时打开
fstrim.timer
ssd 磁盘 TRIM 服务
关闭
SSD 磁盘 TRIM 时打开
gssproxy.service
GSSAPI 代理服务
关闭
rpc.svcgssd 替代,需要 GSSAPI 认证时打开
iprdump.service
IBM Power RAID 适配器 dump 服务
关闭
虚机均关闭
iprinit.service
IBM Power RAID 适配器初始化服务
关闭
虚机均关闭
iprupdate.service
IBM Power RAID 适配器更新服务
关闭
虚机均关闭
iprutils.target
IBM Power RAID 适配器管理服务
关闭
虚机均关闭
ipsec.service
IPSec 服务
关闭
需要 IPSec 安全协议时打开
kexec.target
通过 kexec 重启 kexec 加载内核
关闭
使用 kexec 操作内核时激活重启加载的内核
libstoragemgmt.service
存储管理库 lsmd 服务
关闭
需要管理支持的 SAN 和 RAID 卡时打开,虚机均关闭
lvm2-lvmpolld.service
lvm2 的轮询守护进程
关闭
use_lvmpolld 功能时打开
lvm2-monitor.service
lvm2 的 mirror 监控进程
关闭
需要 lvm2 监控进程时打开
mdmonitor.service
MD 软件 RAID 监控进程
关闭
采用 md 软件 raid 时打开
microcode.service
硬件微代码更新服务
关闭
微码更新时打开
nfs-blkmap.service
并行 NFS 服务进程
关闭
pnfs 时打开
nfs-server.service
nfs server 服务
关闭
nfs server 提供服务时打开
nfs-client.target
Nfs client 服务
关闭
nfs client 提供服务时打开
plymouth*
图卡渲染服务
关闭
需要图卡直接渲染功能时打开
pmcd.service
性能指标搜集服务
关闭
使用 pcp 获取性能参数时打开
pmie.service
性能指标接口服务
关闭
使用 pcp 获取性能参数时打开
pmlogger.service
性能指标日志服务
关闭
使用 pcp 获取性能参数时打开
pmproxy.service
性能指标代理服务
关闭
使用 pcp 获取性能参数时打开
powertop.service
电源管理服务
关闭
诊断电源消耗及电源管理时打开
psacct.service
内核进程计数服务
关闭
需要统计进程计数及活动情况时打开
rasdaemon.service
RAS 日志服务
关闭
需要 RAS 管理服务时打开
ras-mc-ctl.service
RAS 内存控制服务
关闭
需要 RAS 管理任务时打开
rdisc.service
ICMP 路由发现服务
关闭
需要 ICMP 路由服务时打开
named.service
DNS Server 服务
关闭
需要 DNS 服务时打开
rngd.service
硬件 RNG 收集器服务
关闭
需要 RNG 收集服务时打开
rpc-rquotad.service
RPC 磁盘配额服务
关闭
远程磁盘配额服务
rsyncd.service
远程同步服务
关闭
提供远程同步服务时打开
smartd.service
智能卡服务
关闭
需要智能卡时打开
snmpd
snmp 服务
关闭
需要 snmp 服务时打开
tcsd.service
TPM 设备用户空间进程服务
关闭
需要 TPM 设备时打开
tuned.service
监视系统组件使用情况并动态调整系统设置的服务
关闭
需要 tuning profile 时打开
xinetd.service
超级服务
关闭
需要 xinetd 管理的服务时打开
postfix
邮件服务
关闭
-
NetworkManager.service
网络管理
开启
-
systemd-hibernate.service
系统休眠
关闭
-
rdma-hw.target
RDMA
关闭
有 RDMA 硬件时开启
Systemd-journald
日志服务
开启
Stroage 配置建议保持默认(不做修改,默认是 auto),同时建议部署时创建日志目录(如不创建,则默认使用内存保存日志),减少日志导致的内存占用。
mkdir -p /var/log/journal/

第四章:操作系统核心内核参数设置

分类
参数
默认值
建议值
说明
系统全局
运行级别
multi-user(3)
multi-user(3)
建议使用文本界面,如需图形界面,需单独安装相应组件,并设置运行级别为5
data seg size
Unlimited
Unlimited
-
-
File size
Unlimited
Unlimited
-
-
Open file
1024
65535
-
-
Message queues
819200
819200
-
-
Stack size
8192
8192
-
-
Max user processes
14896
65535
-
-
/etc/selinux/config
enforcing
disabled
基于安全优先原则,Selinux 默认开启。如需关闭:修改 /etc/selinux/configdisabled 后,需要重启才能生效;若需立即生效需执行 setenforce 0
-
内存
vm.swappiness
30
10
表示激活 swap 之前空闲内存的百分比。 该值越低,使用的 swap 越少,物理内存中保留的内存页面就越多。
vm.dirty_background_ratio
10
10
当文件系统缓存脏页数量达到系统内存的 dirty_background_ratio% 时就会触发后台回写进程运行,将一定缓存的脏页异步地刷入磁盘(异步 writeback)
-
vm.dirty_ratio
30
30
当文件系统缓存脏页数量达到系统内存 dirty_ratio%,系统开始处理缓存脏页(同步 writeback)
-
调度
kernel.sched_min_granularity_ns
10000000
10000000
表示某个运行队列上进程数大于 sched_nr_latency时,调度周期 = sched_min_granularity_ns 乘以进程数
kernel.sched_latency_ns
18000000
18000000
表示某个运行队列上进程数小于 sched_nr_latency 时的调度周期
-
kernel.sched_migration_cost_ns
500000
500000
-
-
网络
net.ipv4.tcp_keepalive_time
7200
120
表示某个 TCP 连接在空闲多少秒后,内核才发起探测
net.ipv4.tcp_retries2
15
5
-
-
net.ipv4.tcp_syn_retries
6
2
-
-
net.ipv4.tcp_keepalive_probes
5
5
表示 TCP 连接空闲一段时间后,内核发起探测,探测多少次不成功内核才发起RST。
-
net.ipv4.tcp_keepalive_intvl
15
15
每次探测的间隔
-
net.ipv4.ip_local_port_range
32768 60999
20000 65535
-
-
net.ipv4.ip_forward
0
0
-
·-
net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.conf.default.secure_redirects = 0 net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.default.log_martians = 1 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_ignore_bogus_error_responses = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.tcp_syncookies = 1 net.ipv6.conf.all.accept_ra = 0 net.ipv6.conf.default.accept_ra = 0 net.ipv6.conf.all.accept_redirects = 0 net.ipv6.conf.default.accept_redirects = 0
-
-
-
-
调测
kernel.printk
3 4 1 7
5
“3 4 1 7” 4个值分别对应:
(1) 控制台日志级别:优先级高于该值的消息将被打印至控制台。
(2) 缺省的消息日志级别:将用该值来打印没有优先级的消息。
(3) 最低的控制台日志级别:控制台日志级别可能被设置的最小值。
(4) 缺省的控制台:控制台日志级别的缺省值。 “5” 对应KERN_NOTICE /* normal but significant */。
kernel.hung_task_panic
0
0
-
-
kernel.panic_on_oops
1
1
-
-
kernel.panic_on_rcu_stall
0
0
-
-
kernel.softlockup_panic
0
1
-
-
vm.panic_on_oom
0
0
-
-

第五章:网络密集型业务场景最佳配置实践

实例:QQ 核心业务上云场景。该业务是网络密集型业务,最初上云时出现性能不达标。在深入分析业务瓶颈后,重点针对网络部分进行配置调优,达到了性能要求。其网络内核配置优化如下:(供类似业务场景参考)
数据库场景默认要64k以上,默认配置是64k所以本身可以适用于大部分场景,业务场景这里又调大了一倍
kernel.msgmnb = 131072
缓冲区设置都比默认要大,udp 未做调整,这里可根据客户业务再适配
net.core.rmem_default = 10000000 net.core.rmem_max = 10000000 net.core.wmem_default = 10000000 net.core.wmem_max = 10000000 net.ipv4.tcp_rmem = 30000000 30000000 30000000 net.ipv4.tcp_wmem = 30000000 30000000 30000000
默认是 4096,这里评估如果需要调整的话,需要同时调整 net.core.netdev_max_backlognet.ipv4.tcp_max_syn_backlog
net.core.somaxconn = 65535
默认为30s
net.ipv4.ipfrag_time = 15
默认为32768 - 60999
net.ipv4.ip_local_port_range = 21000 61000
默认为1,可能会丢包。这里可能需要根据客户业务场景对安全性一类的要求再评估。
net.ipv4.conf.all.rp_filter = 0
默认为6
net.ipv4.tcp_syn_retries = 3
默认为2,这里可以根据业务模型短链接的情况评估下
net.ipv4.tcp_tw_reuse = 1
默认为60
net.ipv4.tcp_fin_timeout = 30
默认为0,需评估网络环境
net.ipv4.tcp_orphan_retries = 3
默认是7200
net.ipv4.tcp_keepalive_time = 840
默认是75,业务场景这里是缩短链接维持时间并增加探测频率
net.ipv4.tcp_keepalive_intvl = 15
默认是5
net.ipv4.tcp_synack_retries = 2
默认是262144
net.ipv4.tcp_max_orphans = 524288
默认是1,0会提速,内网环境应该 OK
net.ipv4.tcp_slow_start_after_idle = 0
默认是0
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1

第六章:其他系统配置说明

TencentOS Server 3 兼容 CentOS8,网络管理默认使用 networkmanager 系统(与 CentOS7 基于 network-scripts 工具有较大差异),建议使用 nmcli 工具管理网络,示例如下:
nmcli con mod eth0 ipv4.addresses "172.17.1.222/24"
nmcli con mod eth0 ipv4.gateway "172.17.0.1"
nmcli con mod eth0 ipv4.dns "172.17.0.221 172.17.0.220"
nmcli con mod eth0 ipv4.method manual
nmcli con mod eth0 connection.autoconnect yes