【Linux】服务器分析

【Linux】服务器分析

  • 【一】基础概念
  • [【二】16C 32G 机器理论性能上限](#【二】16C 32G 机器理论性能上限)
    • [【1】CPU 上限](#【1】CPU 上限)
    • [【2】内存上限(总 32G)](#【2】内存上限(总 32G))
    • [【3】IO / 网络隐性上限](#【3】IO / 网络隐性上限)
  • [【三】如何充分利用 16C32G 资源](#【三】如何充分利用 16C32G 资源)
    • 【1】核心原则
    • [【2】Java/DataX 类应用(IO 密集型,DataX 同步服务)](#【2】Java/DataX 类应用(IO 密集型,DataX 同步服务))
      • [(1)JVM 内存分配标准(32G 机器)](#(1)JVM 内存分配标准(32G 机器))
      • [(2)线程池配置(DataX 核心 channel 通道)](#(2)线程池配置(DataX 核心 channel 通道))
    • [【3】Nginx(轻量网关,转发 DataX 请求)](#【3】Nginx(轻量网关,转发 DataX 请求))
    • [【4】系统内核参数调优(最大化网络 / 文件性能)](#【4】系统内核参数调优(最大化网络 / 文件性能))
    • 【5】负载均衡拆分资源(集群场景)
  • [【四】看服务器 CPU、内存、磁盘、线程资源使用](#【四】看服务器 CPU、内存、磁盘、线程资源使用)
    • 【1】top(实时整机监控)
    • 【2】内存专项查看
    • [【3】CPU 硬件规格查询(确认 16C 真实配置)](#【3】CPU 硬件规格查询(确认 16C 真实配置))
    • [【4】线程 / 进程资源排查(定位哪个线程占满 CPU)](#【4】线程 / 进程资源排查(定位哪个线程占满 CPU))
    • [【5】磁盘 IO 负载(DataX 同步重点监控)](#【5】磁盘 IO 负载(DataX 同步重点监控))
    • [【6】网络负载(StreamLoad 大量 HTTP 请求)](#【6】网络负载(StreamLoad 大量 HTTP 请求))
  • [【五】资源利用率判定标准(16C32G 运维阈值)](#【五】资源利用率判定标准(16C32G 运维阈值))

【一】基础概念

【1】CPU 核心(16C)

当前机器逻辑 CPU 总数 = 16 个,操作系统调度最小单位是逻辑 CPU。

单核同一时间只能执行 1 个线程;

16C 理论最大并发线程调度上限:同时跑满 16 个活跃线程;

CPU 使用率 100% = 16 个核心全部打满,无空闲算力。

【2】进程

独立程序实例,拥有独立内存空间、文件句柄、PID;

例:一个 DataX 服务、一个 Nginx、一个 Java 应用,各是独立进程。

进程之间内存隔离,不能直接共享堆内存。

【3】线程

进程内的执行单元,共享进程堆内存、文件句柄;

Java/DataX 都是多线程模型,一个进程可以开几十~几百个线程;

操作系统 CPU 调度只看线程,不看进程。

【二】16C 32G 机器理论性能上限

【1】CPU 上限

满载阈值:CPU 整体使用率持续 ≥85% 属于高负载;持续 100% 代表瓶颈;

线程安全上限:业务计算线程总和建议 ≤12至14(预留 2至4 核给系统、网络 IO、内核线程);

超载危害:线程数远超 16 → 操作系统频繁上下文切换,CPU 软中断飙升,吞吐量反而下降。

【2】内存上限(总 32G)

(1)系统内存分三块,不可全部给业务:

OS 系统预留:4~6G(内核、缓冲区、TCP 缓存、PageCache);

业务应用可用内存:24~28G;

Swap 交换分区:尽量关闭,物理内存不足会疯狂刷磁盘,性能暴跌。

(2)内存水位划分:

安全水位:总内存占用 ≤70%(≤22G);

高负载水位:70%~85%;

危险水位:>85%,容易触发 OOM killer 杀死进程。

【3】IO / 网络隐性上限

文件句柄上限:系统默认 1024,多线程同步场景必须调至 65535;

TCP 连接上限:高并发服务需调大somaxconn、epoll参数;

磁盘 IO:大量读写场景(如 DataX 同步),磁盘会先于 CPU 成为瓶颈。

【三】如何充分利用 16C32G 资源

【1】核心原则

资源隔离:单进程内存不超限,多进程 CPU 线程总和不超过安全核数;

预留缓冲:系统永远预留 2~4 核、4G 内存,不打满硬件;

避免资源争抢:同一机器不要混跑高 CPU + 高 IO 重负载服务;

线程池匹配 CPU 核数:计算密集型线程≈CPU 核数,IO 密集型可适度放大。

【2】Java/DataX 类应用(IO 密集型,DataX 同步服务)

(1)JVM 内存分配标准(32G 机器)

bash 复制代码
-Xms20G -Xmx20G

固定堆 20G,预留 12G 给系统 PageCache、内核、其他轻量进程;

禁止设置-Xmx28G,无系统缓冲会导致磁盘频繁 IO 卡顿。

(2)线程池配置(DataX 核心 channel 通道)

DataX 每个 channel = 1 读线程 + 1 写线程,属于 IO 密集型(网络读写 Doris/MySQL):

(1)单台机器安全最大并发 channel:10~12;

(2)不要开到 16,预留核给网络、磁盘 IO、GC 线程;

(3)3 台 16C 机器集群总并发上限:30~36 通道,均衡分流不单点压满。

【3】Nginx(轻量网关,转发 DataX 请求)

CPU 消耗极低,可同机部署:

worker 进程数设置等于 CPU 核心数:worker_processes 16;

worker 连接上限调大:worker_connections 65535;

内存占用仅几百 MB,几乎不抢占业务资源。

【4】系统内核参数调优(最大化网络 / 文件性能)

bash 复制代码
# 1. 文件句柄放开
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf

# 2. TCP网络调优,高并发StreamLoad请求专用
sysctl -w net.core.somaxconn=65535
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.core.netdev_max_backlog=50000

# 3. 关闭swap,防止内存不足卡顿
sysctl -w vm.swappiness=0

【5】负载均衡拆分资源(集群场景)

你 3 台 16C DataX 服务器:

Nginx 统一入口,请求轮询分发,每台机器负载均衡;

避免单台机器承载 80% 同步任务,出现单点 CPU100%;

调度平台分批下发同步任务,瞬时并发不超过单台 12 通道上限。

【四】看服务器 CPU、内存、磁盘、线程资源使用

【1】top(实时整机监控)

bash 复制代码
top

快捷键:

1:展开 16 颗逻辑 CPU,看每核占用;

M:按内存占用排序进程;

P:按 CPU 占用排序;

H:显示进程内所有线程;

q 退出。

关键指标解读:

Cpu(s):整机平均 CPU 使用率;

%Cpu0~%Cpu15:每颗核心单独负载;

Mem total/used/avail:总内存、已用、可用内存(avail 是真实剩余可用)。

【2】内存专项查看

bash 复制代码
# 人性化单位GB展示
free -h

字段重点看 available(真实剩余内存)。

bash 复制代码
# 底层内存明细,缓存、缓冲区
cat /proc/meminfo

【3】CPU 硬件规格查询(确认 16C 真实配置)

bash 复制代码
# 结构化输出CPU信息
lscpu

# 统计逻辑CPU总数(输出16)
grep processor /proc/cpuinfo | wc -l

# 查看物理CPU、核心、超线程
cat /proc/cpuinfo

【4】线程 / 进程资源排查(定位哪个线程占满 CPU)

步骤 1:top -H 查看进程内线程,找到占用 CPU 高的线程 TID。

bash 复制代码
top -H -p 进程PID

步骤 2:Java 项目打印线程栈(DataX/Java 服务)

bash 复制代码
# 打印进程所有线程堆栈,定位死循环、阻塞线程
jstack 进程PID > thread.log

统计进程线程总数

bash 复制代码
# 替换PID
ps -T -p 12345 | wc -l

【5】磁盘 IO 负载(DataX 同步重点监控)

bash 复制代码
# 实时磁盘IO,每秒刷新
iostat -x 1

重点看 %util,接近 100% 代表磁盘 IO 瓶颈。

【6】网络负载(StreamLoad 大量 HTTP 请求)

bash 复制代码
# 实时网卡流量
sar -n DEV 1

# 连接数统计
netstat -ant | wc -l
ss -s

【五】资源利用率判定标准(16C32G 运维阈值)

(1)CPU

健康:平均负载 <12,单核心无长期 100%;

告警:平均负载 > 14,持续 5 分钟;

瓶颈:全 16 核打满,任务排队、同步速度下降。

(2)内存

健康:available >10G;

告警:available <6G;

危险:available <3G,触发 swap/OOM。

(3)磁盘 IO

告警:% util 持续 > 80%;

瓶颈:% util=100%,写入延迟暴涨,DataX 同步卡顿。