AlgerFan | Blog AlgerFan | Blog

Step by step, the sun

目录
8月18日回忆录
/  

8月18日回忆录

一周回顾

  这周总体来说收获不大,前两个在学 SpringCloud,这也是我一直想学的,尽管之前的学长告诉我,微服务不急着看,但是我就是这样,喜欢研究一些新的技术,特别是这几年 SpringCloud 火的时候,了解了它的强大之后,就更加想学了,于是就想利用假期时间学了,之后再回过头学习深的东西,继续学习 MySQL、高并发等等。之后的几天在调整小组的服务器,练算法。

脱坑之旅

  因为之前老师要求小组官网的所有项目都要能访问,但实际上小组有大大小小接近 30 个项目,当然更多的是小项目啦 😰 ,主要解决的是怎么在服务器有限的资源下部署尽可能多的项目,于是整理所有项目的 war 包、jar 包,2 核 4G 的服务器固然是跑不了那么多项目的,那就先试试吧,先扔了 11 个 war 到 Tomcat 下,启动许久之后,让我惊奇的是内存占用才 1.7G,要知道总共 3.7G,这让我很惊讶,也就是说可以部署 20 多个项目?

  理论上应该是不可能的,经过测试之后发现确实是不可能😄,11 个 war 包跑起来,那也仅仅是跑起来而已,要知道 CPU 承受不了那么多项目的运行。因为有一些项目是 SpringBoot 的项目,jar 包跑了两个,占用内存实在太大,毕竟每个 jar 包运行都有一个内置 Tomcat,尽管部署简单,但是占用资源。于是就重新打包为 jar 包,但是在这里遇到一个坑,我使用 Tomcat 部署时,每个项目都对应一个端口号,因为如果不配端口号,用统一端口 + 项目名,有的项目 AJAX 会出问题,大部分接口的请求路径类似于/user/*,没有动态获取项目的根路径。坑的地方就是 SpringBoot 打 war 包之后,不配端口号可以运行,一旦配了端口号,Tomcat 就闪退,让你来不及看到报错,只能去看日志,日志的报错也更是奇怪,第二个项目及后续项目会报unable to register MBean,不过还好网上找到了解决方案:

在 SpringBoot 项目中配置文件加上
spring.jmx.enabled=false

  其实对这个配置也并不是很了解,其中还有个配置是spring.jmx.default-demain=**,问题应该在于 SpringBoot 中要求 domain 唯一导致的,关闭了这个选项自然就没问题了,再次尝试了一次部署 15 个项目后,出现问题了,跑是跑了起来,但是导致服务器特别卡,连接上服务器后才发现 CPU 一直处于爆满状态,这显然是不行的,访问项目也是极其的卡,在多次尝试之后还是放弃了,最终决定分摊一部分项目给个人服务器部署,18 级的小伙伴也拉进了队伍,买了学生机,一个人分了两个项目,应该就差不多了,到时候官网,招新都需要部署,给服务器留一些空间应该是足以应付了,实在不行再搞个负载均衡,办法总是会有的。


标题:8月18日回忆录
作者:AlgerFan
地址:https://www.algerfan.cn/articles/2019/08/18/1566092708471.html
版权声明:本文为博主原创文章,转载请附上博文链接!