Linux

浏览该分类下的所有文章

用PSI看懂Kubernetes资源压力

线上接口出现延迟尖刺时,我们通常先看 CPU、内存和磁盘使用率。但这些指标只能说明资源“用了多少”,无法直接回答业务线程“因为资源不足等待了多久”。Linux PSI 从任务停顿时间出发,量化 CPU、内存和 I/O 竞争对工作负载造成的真实影响。本文将结合 Linux、cgroup v2、Kubernetes、Prometheus 和 Java 服务排障,讲清 PSI 指标的读取方式、关联分析思路、告警策略以及常见资源问题的优化方向。

CXL 4.0如何重构内存扩展与资源池化

传统服务器内存长期绑定在CPU插槽和DDR通道上,容易出现部分机器闲置、部分机器容量不足。CXL通过CXL.io、CXL.cache和CXL.mem,将处理器、加速器与外接内存纳入一致性互连,并支持扩展、池化和动态分配。本文解析CXL 4.0的128 GT/s链路、Bundled Port与RAS增强,说明Linux如何将CXL内存映射为DAX或System RAM,并讨论数据库、AI及Java服务采用分层内存时的适用场景、性能边界与上线检查项。

用Linux DAMON看懂冷热页与主动回收

传统内存监控能告诉我们进程占用了多少内存、系统是否出现压力,却很难回答哪些页面正在频繁使用、哪些页面长期闲置。Linux DAMON 通过区域化采样、动态合并与拆分,在可控开销下持续刻画内存访问频率和冷热变化;DAMOS 进一步把观测结果转化为统计、回收、LRU 优先级调整和内存迁移策略。本文从原理、工具对比、实战命令到生产灰度方案,讲清如何用 DAMON 定位无效常驻内存,并降低直接回收、kswapd 抖动和延迟尖峰风险。

从96%到70%

本文记录了把四个独立的 Spring Boot 项目(chat、puke、zepp、blog)合并为一个 Maven 多模块工程,只启动一个 total‑app.jar 的实践。原先每个项目占用一个 JVM,导致服务器内存接近 96%;通过在根 pom 统一依赖、在 launcher 中用 SpringApplicationBuilder 依次启动四个 ApplicationContext,并将配置分别放在 chat.yml、puke.yml、zepp.yml、blog.yml 中,消除了 JVM 底座的重复开销,内存降至约 70%。文章重点阐述了类路径冲突、资源目录重名、自动配置串扰和日志全局化等踩坑及对应的统一依赖、资源隔离、spring.autoconfigure.exclude 等解决方案。部署时仅需一次打包并用单条 java 命令启动,端口和 Nginx 配置保持不变,运维更简洁。该方案适合资源受限、访问量不高且对隔离要求不强的场景,虽牺牲了故障隔离,但能显著降低内存压力,为小型服务器提供务实的优化路径。

一次OOM排查实录

日志在运行时被硬截断,排查后发现是 Linux OOM Killer 将进程强制 kill,根因是 2 GB 服务器同时运行 3 个未限制堆大小的 Spring Boot 项目、MySQL 8.0 和监控组件,JVM 默认占用近 3 GB,MySQL 参数又消耗数百 MB,且没有 Swap 作为缓冲。通过为每个 JVM 设置‑Xms/‑Xmx(如 512 M、256 M),调小 MySQL 的 innodb_buffer_pool、max_connections、关闭 performance_schema 并添加 2 GB swap,内存使用降至安全范围,进程不再被 OOM Killer 杀死。经验教训是:小内存机器必须限制 JVM、精简 MySQL 配置并配置 swap,长期方案是迁移数据库或升级机器。

将Spring Boot项目部署到阿里云CentOS7并设置关闭命令行终端项目不停止运行

本文介绍了在阿里云 CentOS7 上部署 Spring Boot 项目并实现关闭终端后仍保持运行的完整流程:先在 yml 中更改数据库 IP,执行 clean‑package 打包得到 jar;登录云服务器,创建目录并上传 jar;编写 startup.sh 脚本,使用 `nohup java -jar /myworkspace/blog.jar --server.port=8081 &` 启动并将其设为可执行;通过 `chmod -R 777` 授权后运行脚本,使用 `tail -f nohup.out` 检查日志确认启动;提供了 Nginx HTTPS 配置参考;最后给出查询和 kill 进程停止 Spring Boot 的命令。

Linux命令速查手册

本文提供Linux常用命令速查,包括查看系统硬件信息(arch、uname、/proc/*、lspci、lsusb),时间管理(date、cal、clock),关机/重启(shutdown、reboot),文件目录操作(cd、ls、tree、mkdir、rm、mv、cp、ln、touch),文件搜索(find、locate、whereis、which),挂载/卸载文件系统(mount、umount、fuser),磁盘空间查询(df、du、rpm、dpkg),用户组管理(useradd、groupadd、passwd、chage),权限与属性设置(chmod、chown、chgrp、chmod +s/g/t、chattr),压缩打包(gzip、bzip2、tar、zip、rar),以及RPM 包的安装、查询、验证、升级和删除等完整示例。