第一章:系统服务
系统服务名称 | 服务描述 | 默认安装 | 建议 | 开启条件 |
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 | 日志服务 | 是 | 开启 | Storage 配置建议保持默认(不做修改,默认是 auto),同时建议部署时创建日志目录(如不创建,则默认使用内存保存日志),减少日志导致的内存占用。 mkdir -p /var/log/journal/ |
第二章:参数说明
分类 | 参数名 | 说明 |
系统全局 | 运行级别 | 控制系统启动后进入的运行模式。multi-user(3)为多用户文本模式,graphical(5)为图形界面模式。服务器环境建议使用文本模式以减少资源消耗,如需图形界面需单独安装相应组件并切换运行级别。 |
| data seg size | 限制进程数据段(data segment)的最大大小,即进程可通过 brk/sbrk 系统调用分配的最大内存量。设置为 Unlimited 表示不限制进程数据段的大小。 |
| File size | 限制进程可创建的单个文件的最大大小。设置为 Unlimited 表示不限制文件大小,允许进程创建任意大小的文件。 |
| Open file | 限制单个进程可同时打开的文件描述符数量上限。该参数影响进程能同时打开的文件、套接字、管道等资源数量,高并发服务器场景通常需要调大此值。 |
| Message queues | 限制用户可用于 POSIX 消息队列的最大内存字节数。消息队列用于进程间通信,该值决定了单个用户可以分配给所有消息队列的总内存上限。 |
| Stack size | 限制进程栈空间的最大大小(单位KB)。栈空间用于存储函数调用信息、局部变量等,过小可能导致栈溢出,过大则浪费虚拟地址空间。 |
| Max user processes | 限制单个用户可同时创建的最大进程/线程数量。该值影响系统能够同时运行的进程总数,高并发场景需适当调大。 |
| /etc/selinux/config | SELinux(安全增强 Linux)的全局配置文件,用于设置 SELinux 的工作模式。enforcing 为强制模式,permissive 为宽容模式(仅记录不阻止),disabled 为完全禁用。修改后需重启系统才能生效,若需立即临时生效可执行 setenforce 命令。 |
内存 | vm.swappiness | 控制内核将内存页面交换到 swap 分区的积极程度,取值范围0-100。值越低,内核越倾向于保留物理内存中的页面,减少 swap 使用;值越高,内核越积极地将不活跃页面换出到 swap。服务器环境建议设置较低值以优先使用物理内存。 |
| vm.dirty_background_ratio | 当文件系统脏页(已修改但未写入磁盘的缓存页)数量占系统总内存的百分比达到该阈值时,内核会启动后台回写(pdflush/flush)进程,以异步方式将脏页写入磁盘。该参数用于控制后台异步写回的触发时机。 |
| vm.dirty_ratio | 当文件系统脏页数量占系统总内存的百分比达到该阈值时,产生脏页的进程将被阻塞,内核强制以同步方式将脏页写入磁盘。该参数用于防止内存中积累过多脏页,避免突然的大量磁盘 I/O。 |
调度 | kernel.sched_min_granularity_ns | CFS 调度器的最小调度粒度(单位纳秒)。当某个 CPU 运行队列上的进程数超过 sched_nr_latency 阈值时,调度周期等于此值乘以进程数。该参数保证每个进程获得的最小 CPU 时间片,防止频繁切换。 |
| kernel.sched_latency_ns | CFS 调度器的目标调度周期(单位纳秒)。当 CPU 运行队列上的进程数少于 sched_nr_latency 时,使用此值作为调度周期。所有可运行进程在此周期内至少运行一次。 |
网络 | net.ipv4.tcp_keepalive_time | TCP 连接空闲后,内核开始发送 keepalive 探测包的等待时间(单位秒)。当 TCP 连接在该时间内没有任何数据传输时,内核将开始发送探测报文以检测对端是否仍然存活。 |
| net.ipv4.tcp_retries2 | TCP 数据包重传的最大次数。当已建立的 TCP 连接发送数据后未收到确认时,内核会重传数据,超过此次数后内核将放弃重传并关闭连接。该值影响连接在网络不稳定时的容忍度。 |
| net.ipv4.tcp_syn_retries | TCP 主动建立连接时 SYN 包的最大重试次数。客户端发送 SYN 请求后如果没有收到 SYN+ACK 响应,将重试发送 SYN 包,超过此次数后放弃连接。 |
| net.ipv4.tcp_keepalive_probes | TCP keepalive 探测的最大次数。当 keepalive 探测开始后,如果连续发送此数量的探测包均未收到对端响应,内核将认为连接已失效并发送 RST 关闭连接。 |
| net.ipv4.tcp_keepalive_intvl | TCP keepalive 探测包之间的发送间隔(单位秒)。在首次 keepalive 探测发出后,如果未收到响应,后续探测将按此间隔重复发送,直到达到最大探测次数。 |
| net.ipv4.ip_local_port_range | 定义本地 TCP/UDP 端口的可用范围。当应用程序不指定源端口进行连接时,内核从此范围中选择可用端口。调大范围可支持更多并发连接。 |
| net.ipv4.ip_forward | 控制是否启用 IPv4数据包转发功能。设为1时系统可作为路由器在网络接口之间转发数据包,设为0时禁用转发。普通服务器通常不需要开启此功能。 |
| net.ipv4.conf.all.send_redirects | 控制系统是否向所有网络接口发送 ICMP 重定向消息。ICMP 重定向用于告知发送方存在更优路由路径,出于安全考虑,非路由器设备建议禁用此功能。 |
| net.ipv4.conf.default.send_redirects | 控制系统是否向新建网络接口默认发送 ICMP 重定向消息。与 conf.all.send_redirects 类似,但仅作用于新创建的网络接口的默认配置。 |
| net.ipv4.conf.all.accept_source_route | 控制是否接受所有接口上的 IP 源路由选项。源路由允许发送方指定数据包经过的路由路径,可能被攻击者利用进行 IP 欺骗,建议禁用。 |
| net.ipv4.conf.default.accept_source_route | 控制新建网络接口是否默认接受 IP 源路由选项。与 conf.all.accept_source_route 类似,但仅作用于新创建接口的默认行为。 |
| net.ipv4.conf.all.accept_redirects | 控制是否接受所有接口上的 ICMP 重定向消息。接受重定向可能被攻击者利用来篡改路由表,建议在非路由器设备上禁用。 |
| net.ipv4.conf.all.secure_redirects | 控制是否仅接受来自网关列表中网关的 ICMP 重定向消息。即便开启了 accept_redirects,此参数也可限制仅接受可信网关的重定向。 |
| net.ipv4.conf.default.secure_redirects | 控制新建网络接口是否默认仅接受来自网关列表中网关的 ICMP 安全重定向消息。 |
| net.ipv4.conf.all.log_martians | 控制是否记录所有接口上来源地址不合法的数据包(火星包)日志。启用后,内核会将源地址不合理(如私有地址出现在公网接口)的数据包记录到系统日志中,有助于安全审计。 |
| net.ipv4.conf.default.log_martians | 控制新建网络接口是否默认记录源地址不合法数据包的日志信息。 |
| net.ipv4.icmp_echo_ignore_broadcasts | 控制是否忽略发往广播地址的 ICMP Echo 请求(ping 广播)。启用可防止 smurf 攻击,攻击者通过伪造源地址向广播地址发送 ping 请求来放大攻击流量。 |
| net.ipv4.icmp_ignore_bogus_error_responses | 控制是否抑制针对不符合 RFC 1122的异常 ICMP 错误响应的内核告警日志。启用后主要作用是减少此类 bogus error response 的日志噪音,而不是作为通用的 ICMP 报文过滤开关。 |
| net.ipv4.conf.all.rp_filter | 控制所有接口的反向路径过滤(Reverse Path Filtering)模式。0表示关闭源地址校验;1表示严格模式,仅当报文源地址的最佳反向路径就是接收接口时才通过;2表示宽松模式,只要系统存在到该源地址的可达路由即可通过。多宿主或非对称路由场景通常更适合宽松模式。 |
| net.ipv4.conf.default.rp_filter | 控制新建网络接口默认采用的反向路径过滤模式。其取值语义与 conf.all.rp_filter 一致:0关闭、1严格模式、2宽松模式,仅影响新创建接口的默认行为。 |
| net.ipv4.tcp_syncookies | 控制是否启用 TCP SYN Cookie 机制。当 SYN 队列溢出时,内核使用 SYN Cookie 技术处理连接请求而不分配资源,可有效防御 SYN Flood 攻击。 |
| net.ipv6.conf.all.accept_ra | 控制所有接口是否接受 IPv6路由器通告(Router Advertisement)。路由器通告用于 IPv6无状态地址自动配置(SLAAC),非需要 IPv6自动配置的场景建议禁用。 |
| net.ipv6.conf.default.accept_ra | 控制新建网络接口是否默认接受 IPv6路由器通告。与 conf.all.accept_ra 功能相同,但仅影响新创建接口的默认行为。 |
| net.ipv6.conf.all.accept_redirects | 控制所有接口是否接受 IPv6的 ICMP 重定向消息。出于安全考虑,建议在非路由设备上禁用以防止路由表被恶意篡改。 |
| net.ipv6.conf.default.accept_redirects | 控制新建网络接口是否默认接受 IPv6的 ICMP 重定向消息。 |
| net.core.rmem_default | 设置套接字接收缓冲区的默认大小(单位字节)。当应用程序未显式设置接收缓冲区大小时,使用此默认值。网络密集型业务可适当调大以提高吞吐量。 |
| net.core.rmem_max | 设置套接字接收缓冲区允许的最大大小(单位字节)。应用程序通过 setsockopt 设置 SO_RCVBUF 时,不能超过此上限。高吞吐量场景需要调大此值。 |
| net.core.wmem_default | 设置套接字发送缓冲区的默认大小(单位字节)。当应用程序未显式设置发送缓冲区大小时使用此默认值。 |
| net.core.wmem_max | 设置套接字发送缓冲区允许的最大大小(单位字节)。应用程序通过 setsockopt 设置 SO_SNDBUF 时,不能超过此上限。 |
| net.ipv4.tcp_rmem | 设置 TCP 套接字接收缓冲区的大小,包含三个值:最小值、默认值、最大值(单位字节)。内核根据可用内存在此范围内动态调整每个 TCP 连接的接收缓冲区大小。 |
| net.ipv4.tcp_wmem | 设置 TCP 套接字发送缓冲区的大小,包含三个值:最小值、默认值、最大值(单位字节)。内核根据可用内存在此范围内动态调整每个 TCP 连接的发送缓冲区大小。 |
| net.core.somaxconn | 设置 socket listen()函数 backlog 队列的最大长度,即已完成三次握手等待 accept()处理的连接队列上限。高并发服务器需要调大此值以避免连接被拒绝。 |
| net.ipv4.ipfrag_time | 设置 IPv4分片在内存中保留的最长时间(单位秒)。超过此时间仍未完成重组的 IP 分片将被丢弃。该参数影响 IP 分片重组的超时行为。 |
| net.ipv4.tcp_tw_reuse | 控制是否允许将 TIME_WAIT 状态的 socket 重新用于新的 TCP 连接。启用后可在高并发短连接场景下快速回收端口资源,减少 TIME_WAIT 状态连接的资源占用。 |
| net.ipv4.tcp_fin_timeout | 设置 TCP 连接在 FIN_WAIT_2状态的超时时间(单位秒)。连接关闭过程中对端未发送 FIN 包时,超过此时间后内核强制关闭连接并回收资源。 |
| net.ipv4.tcp_orphan_retries | 设置孤儿(orphan)TCP 连接在关闭前重试的次数。孤儿连接是指已经不与任何进程关联但仍处于关闭过程中的 TCP 连接。降低此值可加速孤儿连接的回收。 |
| net.ipv4.tcp_synack_retries | 设置 TCP 被动建立连接时 SYN+ACK 包的最大重试次数。服务端收到 SYN 并回复 SYN+ACK 后,如果未收到客户端的 ACK 确认,将重发 SYN+ACK,超过此次数后放弃连接。 |
| net.ipv4.tcp_max_orphans | 设置系统中允许存在的最大孤儿 TCP 连接数。当孤儿连接数超过此阈值时,内核会打印警告并开始强制关闭孤儿连接。该参数用于防止孤儿连接占用过多内核资源。 |
| net.ipv4.tcp_slow_start_after_idle | 控制 TCP 连接空闲后是否重新进入慢启动阶段。设为1时,空闲后拥塞窗口重置为初始值,重新慢启动;设为0时保持之前的拥塞窗口大小,内网环境设为0可提升性能。 |
| net.ipv6.conf.all.disable_ipv6 | 控制是否在所有网络接口上禁用 IPv6协议。设为1时完全禁用 IPv6,设为0时启用。不需要 IPv6的环境建议禁用以减少攻击面。 |
| net.ipv6.conf.default.disable_ipv6 | 控制新建网络接口是否默认禁用 IPv6协议。与 conf.all.disable_ipv6类似,但仅影响新创建接口的默认行为。 |
调测 | kernel.printk | 控制内核日志在控制台上的输出级别,通常对应4个整数:console_loglevel、default_message_loglevel、minimum_console_loglevel、default_console_loglevel。只写单个数字时,仅修改第一个参数(当前 console_loglevel),其余三个参数保持原值不变。 |
| kernel.hung_task_panic | 控制当检测到 hung task(长时间处于不可中断睡眠 D 状态的进程)时,内核是否触发 panic。设为1时内核 panic 以便通过 kdump 收集调试信息,设为0时仅记录告警日志。 |
| kernel.panic_on_oops | 控制当内核发生 oops(内核运行时错误)时是否触发 panic。设为1时 oops 后内核立即 panic,有助于通过 kdump 捕获故障现场;设为0时仅记录 oops 信息,系统可能继续运行但状态不可靠。 |
| kernel.panic_on_rcu_stall | 控制当检测到 RCU(Read-Copy-Update)CPU stall(RCU 回调长时间未执行)时,内核是否触发 panic。设为1时触发 panic 以便调试,设为0时仅打印告警信息。 |
| kernel.softlockup_panic | 控制当检测到 soft lockup(CPU 长时间未让出调度)时,内核是否触发 panic。设为1时触发 panic 以便通过 kdump 收集信息定位问题,设为0时仅记录告警日志。 |
| vm.panic_on_oom | 控制当系统发生 OOM(Out Of Memory,内存耗尽)时,内核是否触发 panic。设为1时内核 panic(不执行 OOM Killer),设为0时内核调用 OOM Killer 选择并杀死进程以释放内存。 |