当前位置: 首页 > news >正文

服务器总是宕机问题记录

博主介绍: 22届计科专业毕业,来自湖南,主要是在CSDN记录一些自己在Java开发过程中遇到的一些问题,欢迎大家一起讨论学习,也欢迎大家的批评指正。

文章目录

  • 背景
  • 调整
  • 总结
  • 补充

背景

2核2G的服务器,服务器安装了tomcat、jdk、redis和一些比较小的脚本文件
tomcat下部署了6个项目总共有400MB大小,项目tomcat总是运行一段时间之后,服务器会宕机
在这里插入图片描述

调整

在bin目录下 catalina.sh文件里插入了 下面一段内容(分配JVM内存,需要按实际情况分配

JAVA_OPTS=“-Xms208m -Xmx616m -Xss1542K -XX:MetaspaceSize=104m
-XX:MaxMetaspaceSize=412m”

在这里插入图片描述

这些 JAVA_OPTS 参数是用于配置 Java 虚拟机(JVM)的启动选项。它们通常用于调整 JVM
的内存使用和性能。下面是对每个参数的简单解释:

  • -Xms208m:
    设置 JVM 初始堆大小为 208MB。 Xms 代表 “initial heap size”,即 JVM 启动时为其堆分配的内存量。
  • -Xmx616m:
    设置 JVM 最大堆大小为 616MB。 Xmx 代表 “maximum heap size”,即 JVM 可以为其堆分配的最大内存量。
  • -Xss1542K:
    设置每个线程的栈大小为 1542KB。 Xss 代表 “thread stack size”,这是 Java 线程在其生命周期中所使用的内存量。
  • -XX:MetaspaceSize=104m:
    -设置 Metaspace 的初始大小为 104MB。 Metaspace 是 Java 8 引入的,用于存储类的元数据。在 Java 8 之前,这部分内存是由永久代(PermGen)管理的。
  • -XX:MaxMetaspaceSize=412m:
    设置 Metaspace 的最大大小为 412MB。 这可以防止 Metaspace 无限增长,从而可能耗尽系统内存。

观察tomcat的运行状态

top -p $(ps -ef | grep tomcat | grep -v grep | awk ‘{print $2}’)

在这里插入图片描述

  • PID: 进程ID,每个进程在系统中都有一个唯一的ID。 USER: 运行该进程的用户名。 PR: 进程的优先级。
  • NI:nice值,这是一个可以调整进程优先级的值。正值会使进程优先级降低,负值会使进程优先级提高。
  • VIRT:进程使用的虚拟内存总量,单位通常是KB或MB。这包括进程使用的库、代码、数据等所占用的内存空间,即使这部分内存并没有被实际驻留在RAM中。
  • RES: 进程当前使用的、未交换出的物理内存大小,单位通常是KB或MB。这是进程实际占用的RAM大小。
  • SHR:共享内存大小,即被多个进程共享的内存大小。 S: 进程状态。可以是R(运行)、S(睡眠)、D(磁盘睡眠)、T(停止)、Z(僵尸)等。
  • %CPU: 进程占用的CPU使用率。
  • %MEM: 进程占用的物理内存百分比。
  • TIME+:进程自启动以来总共占用的CPU时间,包括实际运行时间和等待时间。
  • COMMAND: 启动进程的命令行名称或命令行本身。

总结

我的想法是不升级服务器的情况下,减少JVM内存保证服务器的正常运行,实际看下来还是有效果,服务器没有宕机,只是tomcat的项目访问起来会比较慢。
如果JVM内存太低会出现OOM异常,如果太大就会出现服务器宕机问题,需要实际调整一下JVM内存看看实际效果

补充

生产环境下最大堆内存与最小堆内存建议设置成一样的值,这样的好处:
1:减少堆内存动态调整的开销,从而提升效率;
2:减少内存不足导致的GC性能消耗。

相关文章:

  • 【WPF应用7】 基本控件-Grid 布局的详解与示例
  • 如何在Linux系统使用Docker本地部署Halo网站并实现无公网IP远程访问
  • Python读取csv文件入Oracle数据库
  • vivado 使用远程主机和计算群集
  • 接招吧! selenium环境+元素定位大法
  • TCP重传机制详解——03DSACK
  • jvm高级面试题-2024
  • 如何在Appium中使用AI定位
  • yarn安装包时报错error Error: certificate has expired
  • IDEA2023版本整合SpringBoot热部署
  • GEE训练——如何实现单景影像边界的提取以sentinel和Landsat数据为例(栅格转矢量)
  • github加速神器!解决github巨慢的问题,并且能够加速下载!另外推荐GitKraken -- 超好用的 Git 可视化工具
  • 数字孪生项目中实时数据驱动多节相连车厢沿轨道运行
  • SEO 的未来:GPT 和 AI 如何改变关键词研究
  • 蓝桥杯刷题计划-洛谷-持续更新
  • 【Leetcode】101. 对称二叉树
  • 【知识碎片】第三方登录弹窗效果
  • Android Volley源码解析
  • avalon2.2的VM生成过程
  • Centos6.8 使用rpm安装mysql5.7
  • echarts花样作死的坑
  • js数组之filter
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Protobuf3语言指南
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • REST架构的思考
  • vue.js框架原理浅析
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 排序算法之--选择排序
  • 批量截取pdf文件
  • 前端js -- this指向总结。
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 世界上最简单的无等待算法(getAndIncrement)
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 微信小程序--------语音识别(前端自己也能玩)
  • 我是如何设计 Upload 上传组件的
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​香农与信息论三大定律
  • # 数论-逆元
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (AngularJS)Angular 控制器之间通信初探
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (三十五)大数据实战——Superset可视化平台搭建
  • ***检测工具之RKHunter AIDE
  • .net core 6 redis操作类
  • .pop ----remove 删除
  • /etc/sudoer文件配置简析
  • :“Failed to access IIS metabase”解决方法
  • [ NOI 2001 ] 食物链
  • [2023-年度总结]凡是过往,皆为序章