服务器硬件核心组件与功能
电源:冗余设计(如双电源、UPS电池)确保供电稳定,防止断电导致数据丢失
CPU:处理运算任务,需关注路数(单路/双路)和核数(并行处理能力),散热风扇需定期维护
内存:临时存储数据,读写效率高但断电易丢失,需注意缓冲(写入内存)与缓存(读取内存)机制
磁盘:永久存储设备,机械硬盘需避免物理碰撞,SSD关注寿命监控,RAID技术提升冗余
主板:整合硬件组件,需定期检查接口氧化或损坏。
服务器厂商与型号:常见厂商包括戴尔(PowerEdge系列)、惠普(ProLiant系列)、华为等,不同厂商的硬件接口和管理工具(如iDRAC、iLO)需适配
/proc/cpuinfo --》里面包含CPU的信息,比如说CPU的核数
lscpu --》查看CPU的详细信息,如厂商、核心数等
nproc --》显示逻辑CPU总数
uname -r --》查看内核版本 3.10.0-1160.el7.x86_64
uname -a --》显示所有系统信息 Linux snat-router 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
/proc
文件系统的作用
- 系统信息:
/proc
提供了关于系统硬件、内核参数、进程状态等信息。 - 实时监控:用户可以通过读取
/proc
中的文件来获取实时的系统运行状态。 - 配置管理:某些
/proc
文件可以被写入,从而动态修改内核参数。
常见的 /proc
文件和目录
1. /proc/cpuinfo
- 用途:包含有关系统 CPU 的详细信息。
- 内容:CPU 的型号、核心数、线程数、频率等。
2. /proc/meminfo
- 用途:包含有关系统内存的信息。
- 内容:总内存、可用内存、缓存、交换空间等。
3. /proc/version
- 用途:显示内核版本信息。
- 内容:内核版本、编译时间、编译用户等。
4. /proc/loadavg
- 用途:显示系统的平均负载。
- 内容:1分钟、5分钟、15分钟的平均负载值,以及当前运行的进程数和总进程数。
5. /proc/stat
- 用途:包含系统的统计信息。
- 内容:CPU 使用率、中断、上下文切换等。
ulimit
ulimit 是一个在类 Unix 系统(如 Linux 和 macOS)中常用的命令,用于查看和设置系统对用户或进程的资源限制。这些资源限制可以包括文件大小、内存使用量、打开文件的数量、进程数量等。
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited --》设置单个文件的最大大小
pending signals (-i) 14989 --》设置当前用户可以挂起的最大信号数
max locked memory (kbytes, -l) 64 --》设置用户可以锁定的最大内存大小
max memory size (kbytes, -m) unlimited --》设置进程可以使用的最大物理内存大小
open files (-n) 1024 --》设置每个进程可以打开的最大文件数量
pipe size (512 bytes, -p) 8 --》设置管道(pipe)缓冲区的大小
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0 --》设置实时进程的最大优先级
stack size (kbytes, -s) 8192 --》设置每个进程的栈大小
cpu time (seconds, -t) unlimited --》设置每个进程可以使用的最大 CPU 时间
max user processes (-u) 14989 --》设置每个用户可以创建的最大进程数
virtual memory (kbytes, -v) unlimited --》设置每个进程可以使用的最大虚拟内存大小
file locks (-x) unlimited
ulimit -f 1024 --》将文件大小限制设置为 1024 块(1 块 = 512 字节)。
ulimit -n 2048 --》将打开文件的数量限制设置为 2048
ulimit -u 1024 --》将用户可以创建的最大进程数限制设置为 1024
ulimit -s 4096 --》将栈大小限制设置为 4096 KB
常用选项
-a
:显示所有当前的资源限制。-c
:显示或设置核心文件大小限制(单位:512字节块)。-d
:显示或设置数据段大小限制(单位:KB)。-f
:显示或设置文件大小限制(单位:512字节块)。-l
:显示或设置最大锁定内存大小(单位:KB)。-m
:显示或设置最大物理内存大小(单位:KB)。
-n
:显示或设置每个进程可以打开的最大文件数量。-p
:显示或设置管道缓冲区大小(单位:512字节块)。-q
:显示或设置 POSIX 消息队列的最大字节数。-s
:显示或设置栈大小(单位:KB)。-t
:显示或设置每个进程可以使用的最大 CPU 时间(单位:秒)。-u
:显示或设置每个用户可以创建的最大进程数。-v
:显示或设置每个进程可以使用的最大虚拟内存大小(单位:KB)。-x
:显示或设置每个进程可以持有的最大文件锁数量。-i
:显示或设置当前用户可以挂起的最大信号数。
硬限制和软限制
- 软限制:是当前生效的限制值,用户可以将其设置为小于或等于硬限制的值。
- 硬限制:是软限制的最大值,用户不能将其设置为高于当前硬限制的值。
临时限制和永久限制
临时限制:通过 ulimit 命令设置的限制仅对当前 shell 会话有效,关闭终端或退出登录后,这些设置将失效。
永久限制:要永久修改资源限制,需要编辑配置文件,如 /etc/security/limits.conf 或 /etc/security/limits.d/* 文件
top
top -H --》显示线程信息
top -p [pid] --》查看某个特定进程的信息
top -u [uid] --》查看某个特定用户的所有进程
top -c --》查看运行特定命令的进程
top -d [秒数] --》调整刷新频率
top -bn 1 --》运行一次并立即退出
top 进去后按1 --》显示每个 CPU 核心的详细信息
ps -eo pid,args,psr --》显示所有进程及其对应的 CPU 核编号
pid
:进程 ID。args
:进程的命令行参数。psr
:分配给进程的 CPU 核编号。-e
:显示所有用户的进程o
:自定义输出格式
日志分析与硬件监控
- 关键日志类型:
日志类型 |
路径/命令 |
用途 |
系统日志 |
|
硬件驱动加载失败、内核OOM事件 |
内核日志 |
|
硬件中断错误(如硬盘I/O超时) |
应用日志 |
|
高并发请求导致的线程阻塞 |
硬件健康日志 |
|
硬盘SMART属性(坏道、温度) |
服务器传感器数据 |
|
CPU温度、风扇转速、电源状态 |
- 硬件问题排查:
-
- 高Ping值:通过
ping -c 5 <IP>
检测延迟,结合tcpdump
抓包分析网络拥塞 89。 - 硬件故障:
- 高Ping值:通过
-
-
- 检查
/var/log/kern.log
中的EDAC内存错误日志 71。 - 使用
lm-sensors
监控CPU温度,若超过阈值(如95°C)需检查散热 58。
- 检查
-
CPU异常与硬件问题区分
- 网络问题特征:
-
- 高延迟(Ping值>100ms)、丢包率>5%(
ping
或mtr
检测)。 - 网络带宽饱和(
iftop
或nload
监控) 89。
- 高延迟(Ping值>100ms)、丢包率>5%(
- 硬件问题特征:
-
- CPU过热:
sensors
显示核心温度持续高于90°C 58。 - 内存故障:
dmesg
中提示EDAC MC0: UE memory read error
71。 - 硬盘故障:
smartctl
中Reallocated_Sector_Ct
值增长 1。
- CPU过热:
Nginx负载均衡配置
在nginx.conf
中通过upstream
块定义后端服务器组:
- 基础配置:
upstream backend {
server 10.0.6.108:7080 weight=5; # 权重分配
server 10.0.0.85:8980 max_fails=3 fail_timeout=30s; # 失败检测
server 10.0.0.11:7070 backup; # 备用节点
ip_hash; # 基于IP哈希保持会话
}
开机启动流程
- Power On(开机)
-
- 按下电源按钮,计算机通电启动。
- POST(Power-On Self-Test,开机自检)
-
- 计算机进行硬件自检,确保内存、CPU、显卡等关键硬件正常。
- BIOS(Basic Input/Output System,基本输入输出系统)检测硬件
-
- BIOS初始化硬件设备,建立内存地址映射表,使系统识别硬件。
- Boot 启动顺序检查(第1启动顺序)
-
- BIOS根据预设顺序(如硬盘、光驱、U盘等)查找可引导设备。
- 硬盘
-
- 从硬盘启动,硬盘中包含操作系统和引导程序。
- MBR(Master Boot Record,主引导记录)
-
- 读取硬盘的MBR,MBR包含引导程序、分区表和结束标志。
- GRUB2引导程序
-
- MBR中的引导程序加载GRUB2,GRUB2支持多操作系统启动选项。
- /boot里的文件系统驱动
-
- GRUB2加载文件系统驱动,识别/boot分区内的文件。
- 内核文件(vmlinuz和initramfs)
-
- 加载vmlinuz(Linux内核镜像)和initramfs(初始虚拟文件系统)到内存。
- systemd进程
-
- 启动第一个真正的进程systemd,负责管理系统中的进程、服务、设备等。
- 启动对应的运行级别里的服务
-
- systemd根据配置启动对应运行级别(如多用户模式)的服务程序。
- Multi-User(多用户模式)
-
- 进入多用户模式,系统准备供多个用户登录使用。
- /etc/rc.local和/etc/fstab
-
- 执行/etc/rc.local(自定义启动脚本)和/etc/fstab(文件系统挂载信息)。
- Login(登录)
-
- 用户在登录界面输入用户名和密码,系统根据/etc/passwd和/etc/shadow验证信息。
- 运行用户环境变量初始化文件
-
- 登录成功后,系统运行用户家目录下的环境变量初始化文件(如~/.bashrc、~/.bash_profile等)。
- 显示Bash提示符
-
- 显示Bash提示符,用户可输入命令操作,开机启动流程完成。