zoukankan      html  css  js  c++  java
  • JVM内存分配导致服务无法启动问题

      昨天忙了一天找问题,最终被惊呆了,记录一下。

      现象:  配置对外系统的预发布环境,部署在2个服务器,都是resin5,发布成功,代码都上传到了相应机器上,但是无法通过域名访问。

      分析:

        现象一:发现8094端口没有被监听,

          

                     但是进程里面有resin5的进程:  

           所以我就被引入了误区,诡异一:resin起来了,但是相应端口没被监听。

                  于是去bin目录下重启resin,显示启动成功,但是端口8094还未被监听。

          

                 和运营的同事一起郁闷了好久-------------

        步骤一:请教leader,告知先删掉我发布上去的代码,尝试最小启动。于是rm -rf unicorn* 再重启一下resin5,netstat时候发现8094端口被监听了。

                       分析可得:1. 之前虽然./mqq_start.sh显示running success,但是事实上没启动成功(不能信脚本的输出)

                                         2. 可能是代码问题,因为删掉代码之后就可以成功启动了。

                           于是又有了 诡异二:为什么同样的代码在测试环境上发布,resin就能成功启动,在预发布环境上就不可以?

               步骤二: 既然在测试环境上ok,那肯定就不是代码的问题,那就应该是resin的配置了。于是对比一下resin的start.sh,发现问题了。

            预发布环境resin下的start.sh 

                         

                      测试环境resin下的start.sh:

            

                   一目了然,顿时恍然大悟,是JVM内存分配的问题,预发布环境装的resin初始内存和最大分配的内存都太小了,不够用,所以没起来--

              -XX:PermSize=64M JVM初始分配的非堆内存
              -XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配

                  记录一下,希望遇到此类问题的朋友们能少走弯路,这么小个事情我话费了大半天时间查找和郁闷----

  • 相关阅读:
    使用Microsoft.DirectX和Microsoft.DirectX.Sound进行录音时遇到的异常
    一个奇怪的TextChanged事件
    正则表达式
    lambda详解
    AOP统一处理请求
    SpringBoot表单参数验证
    208道Java常见面试题
    Java100道基础面试题
    Java多线程面试题
    Java编码规范
  • 原文地址:https://www.cnblogs.com/annyliu/p/3688081.html
Copyright © 2011-2022 走看看