• 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最大允许分配的非堆内存,按需分配

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

  • 相关阅读:
    iOS开发tips-UITableView、UICollectionView行高/尺寸自适应
    10559
    日志系统之基于Zookeeper的分布式协同设计
    IOS 图片上传处理 图片压缩 图片处理
    istream, outstream使用及常见错误
    matlab 扩大虚拟内存
    github不小心同步覆盖了本地文件
    经典统计语言模型
    Makefile 快速入门
    word2vec——高效word特征提取
  • 原文地址:https://www.cnblogs.com/annyliu/p/3688081.html
Copyright © 2020-2023  润新知