1
开机几分钟GUI会自动卡死
https://chatgpt.com/share/684fc959-2400-800f-b792-ad820a77dd36
centOS内存
[vincent@api ~]$ free -h
total used free shared buff/cache available
Mem: 5.7G 3.0G 592M 53M 2.1G 2.3G
Swap: 0B 0B 0B
原因
java node zookeeper nacos
‘vincent 3788 6.0 1.0 5530440 88604 ? Ssl 23:37 0:04 /opt/java/openjdk/bin/java -Dzookeeper.log.dir=/logs -Dzookeeper.log.file=zookeeper--server-93f1ff04def7.log -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p -cp /apache-zookeeper-3.9.2-bin/bin/../zookeeper-metrics-providers/zookeeper-prometheus-metrics/target/classes:/apache-zookeeper-3.9.2-bin/bin/../zookeeper-server/target/classes:/apache-zookeeper-3.9.2-bin/bin/../build/classes:/apache-zookeeper-3.9.2-bin/bin/../zookeeper-metrics-providers/zookeeper-prometheus-metrics/target/lib/*.jar:/apache-zookeeper-3.9.2-bin/bin/../zookeeper-server/target/lib/*.jar:/apache-zookeeper-3.9.2-bin/bin/../build/lib/*.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/zookeeper-prometheus-metrics-3.9.2.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/zookeeper-jute-3.9.2.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/zookeeper-3.9.2.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/snappy-java-1.1.10.5.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/slf4j-api-1.7.30.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/simpleclient_servlet-0.9.0.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/simpleclient_hotspot-0.9.0.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/simpleclient_common-0.9.0.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/simpleclient-0.9.0.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-transport-native-unix-common-4.1.105.Final.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-transport-native-epoll-4.1.105.Final-linux-x86_64.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-transport-classes-epoll-4.1.105.Final.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-transport-4.1.105.Final.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-tcnative-classes-2.0.61.Final.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-tcnative-boringssl-static-2.0.61.Final-windows-x86_64.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-tcnative-boringssl-static-2.0.61.Final-osx-x86_64.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-tcnative-boringssl-static-2.0.61.Final-osx-aarch_64.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-tcnative-boringssl-static-2.0.61.Final-linux-x86_64.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-tcnative-boringssl-static-2.0.61.Final-linux-aarch_64.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-tcnative-boringssl-static-2.0.61.Final.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-resolver-4.1.105.Final.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-handler-4.1.105.Final.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-common-4.1.105.Final.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-codec-4.1.105.Final.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/netty-buffer-4.1.105.Final.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/metrics-core-4.1.12.1.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/logback-core-1.2.13.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/logback-classic-1.2.13.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/jline-2.14.6.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/jetty-util-ajax-9.4.53.v20231009.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/jetty-util-9.4.53.v20231009.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/jetty-servlet-9.4.53.v20231009.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/jetty-server-9.4.53.v20231009.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/jetty-security-9.4.53.v20231009.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/jetty-io-9.4.53.v20231009.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/jetty-http-9.4.53.v20231009.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/javax.servlet-api-3.1.0.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/jackson-databind-2.15.2.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/jackson-core-2.15.2.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/jackson-annotations-2.15.2.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/commons-io-2.11.0.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/commons-cli-1.5.0.jar:/apache-zookeeper-3.9.2-bin/bin/../lib/audience-annotations-0.12.0.jar:/apache-zookeeper-3.9.2-bin/bin/../zookeeper-*.jar:/apache-zookeeper-3.9.2-bin/bin/../zookeeper-server/src/main/resources/lib/*.jar:/conf: -Xmx1000m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /conf/zoo.cfg
root 3837 129 11.4 7144992 981908 ? Ssl 23:37 1:28 /usr/lib/jvm/java-1.8.0-openjdk/bin/java -Xms1g -Xmx1g -Xmn512m -Dnacos.standalone=true -Dnacos.preferHostnameOverIp=true -Dnacos.member.list= -Djava.ext.dirs=/usr/lib/jvm/java-1.8.0-openjdk/jre/lib/ext:/usr/lib/jvm/java-1.8.0-openjdk/lib/ext:/home/nacos/plugins/health:/home/nacos/plugins/cmdb:/home/nacos/plugins/mysql -Xloggc:/home/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dnacos.home=/home/nacos -jar /home/nacos/target/nacos-server.jar --spring.config.additional-location=file:/home/nacos/conf/ --spring.config.name=application --logging.config=/home/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
vincent 3927 112 5.1 6387852 438808 ? Ssl 23:37 1:16 /usr/share/elasticsearch/jdk/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch-5046436934132654765 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m -Djava.locale.providers=COMPAT -Des.cgroups.hierarchy.override=/ -Xms64m -Xmx512m -Dio.netty.allocator.type=unpooled -XX:MaxDirectMemorySize=268435456 -Des.path.home=/usr/share/elasticsearch -Des.path.conf=/usr/share/elasticsearch/config -Des.distribution.flavor=default -Des.distribution.type=docker -Des.bundled_jdk=true -cp /usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch -Ediscovery.type=single-node
root 5644 0.0 0.0 112828 988 pts/0 S+ 23:38 0:00 grep --color=auto java
解决
你现在的系统里,一共跑着几个非常“吃资源”的 Java 程序,包括:
🔍 当前运行的 Java 应用:
应用 | 路径(或描述) | 最大堆内存 |
---|---|---|
✅ Zookeeper | /opt/java/openjdk/bin/java ... QuorumPeerMain |
-Xmx1000m (1G) |
✅ Nacos | /home/nacos/target/nacos-server.jar |
-Xmx1g (1G) |
✅ Elasticsearch | /usr/share/elasticsearch/jdk/bin/java |
-Xmx1g (1G) |
❗️还有其他 Java 项(你之前 top 看过多个 java 占用) |
🤔 为什么你的虚拟机会卡顿?
你分配给虚拟机的是 5.7 GB 总内存,而你运行的这 3 个大应用已经预留:
Zookeeper 1G
Nacos 1G
Elasticsearch 1G
------------------
合计(最少) 3G
实际这些服务运行后会多占一点,内存会很快吃满。加上 Linux 自身 + GNOME 桌面等你看到的图形环境 + 其它 Node、MySQL、Docker 等,总内存占用轻松爆满,你看到的卡顿就是结果。
✅ 建议优化方案
🔧 1. 限制 Java 应用内存
- Nacos:
修改启动命令:-Xms512m -Xmx512m
- Elasticsearch:
它已经是
-Xmx512m
,不再下调,否则可能无法启动。 - Zookeeper:
你可以设置为
-Xmx512m
(除非你明确需要处理大量数据)
🔧 2. 增加 Swap 分区(强烈建议)
目前你的系统没有启用 Swap:
Swap: 0B total, 0B used
添加 2G Swap 可以显著缓解内存爆满后的卡死。
创建 Swap 的命令:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
然后写入 /etc/fstab
以确保重启后依然生效:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
🧠 补充建议
- 别开 GUI 桌面(GNOME):它会吃 500MB ~ 1G,CLI 就够了
- 避免同时运行多个大 Java 项目,除非你加大虚拟机内存到 8GB+
- 定期重启 Java 服务:内存占用可能随着时间增长(内存泄露)
关闭gui
你可以通过以下方式让 CentOS 启动时不加载图形界面(GUI),只进入 命令行模式(multi-user target):
✅ 方法一:永久关闭图形界面(默认进入命令行)
sudo systemctl set-default multi-user.target
这样以后每次开机都会进入命令行,不启动 GNOME 或图形界面。
✅ 方法二:临时不开图形界面(本次重启有效)
sudo systemctl isolate multi-user.target
当前这次启动转为命令行模式,但下次重启还是图形界面。
✅ 如果要恢复图形界面开机启动:
sudo systemctl set-default graphical.target
✅ 补充:查看当前默认启动级别
systemctl get-default
输出可能是:
-
graphical.target
:图形界面 -
multi-user.target
:命令行界面
如你想更省资源,还可以直接卸载 GNOME 图形桌面,或者只保留最小图形支持。是否需要我帮你写个“纯命令行 CentOS 精简优化指南”?
在 Linux 虚拟机(比如 CentOS)里安装 VMware Tools,一般有两种主流方法:
方法一:安装 Open VM Tools(推荐)
这是开源版本,支持大部分 VMware 功能,安装方便,且大多数现代 Linux 发行版默认支持。
安装步骤(以 CentOS 为例):
sudo yum install open-vm-tools
sudo systemctl enable --now vmtoolsd
然后重启虚拟机:
sudo reboot
方法二:安装 VMware 官方 Tools(通过 VMware 界面)
在 VMware 菜单栏选择:
VM -> Install VMware Tools(或者 Reinstall VMware Tools)这时 VMware 会把安装包挂载到虚拟机的光驱里。
进入虚拟机,挂载光驱(如果没自动挂载):
sudo mount /dev/cdrom /mnt
- 复制安装包到临时目录:
cp /mnt/VMwareTools-*.tar.gz /tmp/
cd /tmp
tar -zxvf VMwareTools-*.tar.gz
- 进入解压后的目录,执行安装脚本:
cd vmware-tools-distrib
sudo ./vmware-install.pl
一路回车默认即可。
- 安装完成后,卸载光驱:
sudo umount /mnt
- 重启虚拟机:
sudo reboot
总结
- 推荐用方法一,简单高效,且兼容性好。
- 如果你需要完整官方功能或遇到兼容问题,再用方法二。
如果你想,我可以帮你写具体步骤脚本,你说下你的 CentOS 版本,我帮你确认命令。你觉得呢?
the end
经过一系列和ai的交流 ai一直判断是我图形化问题 我的群友都说是我电脑的硬件问题
但是我解决这个问题是通过比较老的方法搜网页 我发现是因为windowsWSL会影响VMWARE的性能 我的VMWARE为了和WSL兼容还升级了版本