• 项目在tomcat里运行一段时间总是自动崩掉的问题排查与解决


    最近的检验系统上线一段时间后,发现系统访问不了,tomcat总是会自动崩掉,一般遇到这种问题,程序员的第一反应都肯定是内存溢出。

    确实是,但是java里内存分好几种,堆内存、栈内存、静态内存区等等,下面记录下我的排查问题步骤,以及解决方法。

    一、查看服务器内存使用情况。

    看看tomcat崩溃的时候,tomcat进程使用内存是否明显占用较多。

    二、查看tomcat日志

    catalina.201X-XX-XX.log

    这个日志记录tomcat每次启动的情况。

    localhost.201X-XX-XX.log

    这个日志记录tomcat里各个webapp运行情况的日志。

    localhost_access_log.201X-XX-XX.txt

    这个日志记录每次url访问的情况。

    看日志可以明白,是报java.lang.StackOverflowError错误了,这个是栈内存溢出,然后还可以看到是在testServlet里的75行出错了。

    这一行是啥呢?

    out.println(sss.toString());

    sss是一个相对很大的方法内的局部变量,一两次访问这个url可能不会有啥大的感觉,最多稍微慢点,但是并发访问多一点,内存溢出就不可避免了。

    三、解决方法

    1.增大tomcat的栈内存。

    具体看这个:Tomcat配置与优化(内存、并发、管理)与性能监控

    2.改代码,避免太大的局部变量。

    四、以后如何监控tomcat运行情况

    使用jdk自带的JvisualVM工具,这个工具很好用,能监控各种java进程的情况,tomcat、eclipse等等,不光能监控本机的,而且还能监控远程的服务器。

  • 相关阅读:
    jekins测试环境自动化
    jenkins
    git
    maven
    spring boot 1
    jmeter 常用函数
    Jmeter之BeanShell--请求失败触发报警邮件
    Python_任意文件中获取项目的绝对路径
    Python_logging在多模块项目中日志输出应用
    Python--判断Mysql启动状态并人工干预下完成启动
  • 原文地址:https://www.cnblogs.com/shamo89/p/8999610.html
Copyright © 2020-2023  润新知