Java应用在Linux的扩容实践
一、先判断扩容类型
二、磁盘与文件系统的扩容
df -h、lsblk、fdisk -lpvdisplay、vgdisplay、lvdisplayvgextend <VG名> /dev/vdX#lvextend -l +100%FREE /dev/mapper/<VG>-<LV>(或指定大小如 +500G)xfs_growfs <挂载点>resize2fs <逻辑卷设备>df -hgrowpart /dev/vda 分区号 扩展分区,再用 xfs_growfs/resize2fs 扩展文件系统。/home 占用大且非关键,可临时卸载并回收空间,再扩展到根分区(示例:umount /home → lvremove <home LV> → lvextend -L +3T /dev/mapper/centos-root → xfs_growfs /)。三、JVM 内存与容器内存的扩容
java -Xms2g -Xmx4g -Xss512k -jar app.jarJAVA_OPTS="-Xms2g -Xmx4g -Xss512k"ps -ef | grep javajava -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|ThreadStackSize'-m 8g),并在 -Xmx 中预留安全余量(避免被 OOM Killer 终止)。-Xms 与 -Xmx 设为相同值,减少运行期扩缩堆带来的抖动。四、应用与架构层面的扩容
五、扩容后的验证与回退
df -h 确认容量增长;iostat -x 1 观察 IOPS/await。jstat -gc <pid>、jmap -heap <pid>、top/htop 观察 GC 与 RSS;容器看 kubectl top pod <name> --containers。