栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

记一次部署问题。(服务启动慢,随机数产生问题)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记一次部署问题。(服务启动慢,随机数产生问题)

【序言】

        作为学习的一个demo,文章可能存在不严谨的解决方案和措辞,发现的同学的多谢及时指出,我会第一时间更新改正,谢谢。

【推荐】

  2021年10月23日11:15:48

            随机数产生问题,spring security 拦截问题待解决


               

【持续更新】

【本文要点】

               xshell,xftp,jdk,tomcat,nginx

【要求】外网能够访问到云服务器上部署的项目,云服务器上必须通过nginx转发。最终的效果

www.domain.top进入到项目主页。


文章目录

        开篇、2021-10-14 开篇:SpringBoot实现blog项目https://junking.blog.csdn.net/article/details/120773656

        一话、nginx配置SSL证书https://mp.csdn.net/mp_blog/creation/editor/120774844

        二话、SpringBoot初级项目部署https://www.domain.com/

        三话、

记一次部署问题。(服务启动慢,随机数产生问题)_清风半夜鸣蛙-CSDN博客服务器:1、 如果说你三个服务所连接的数据库,redis,等等都不一样,那么就是单服务器的多应用部署,可能你是根据配置文件来区分成三个服务,对外的服务就是三个,总的就是三个完全不同的服务,只不过能力是一样的。 2、 如果说三个服务连接的都是同一个数据库,作为一个集群部署的话,对外的服务就一个。 3、当前项目部署三个服务,来对外提供能力。 端口分别是28080、28180、28280。 ...https://blog.csdn.net/H2677lucy/article/details/120835883

        四话、暂停更新

        五话、暂停更新

        六话、暂停更新

        七话、暂停更新

        八话、暂停更新

        九话、暂停更新

        十话、暂停更新        


服务器:

      1、 如果说你三个服务所连接的数据库,redis,等等都不一样,那么就是单服务器的多应用

        部署,可能你是根据配置文件来区分成三个服务,对外的服务就是三个,总的就是三个完

        全不同的服务,只不过能力是一样的。

       2、 如果说三个服务连接的都是同一个数据库,作为一个集群部署的话,对外的服务就一个。

       3、当前项目部署三个服务,来对外提供能力。

        端口分别是28080、28180、28280。

        三个服务都没有连接数据库,数据库层面暂时不存在事务的问题。

        通过nginx的负载均衡来模拟一下session的问题。


Nginx配置:
    upstream anik-blog-web{
        server 127.0.0.1:28080 weight=2 max_fails=2 fail_timeout=30s;
        server 127.0.0.1:28081 weight=3 max_fails=2 fail_timeout=30s;
        server 127.0.0.1:28082 weight=5 max_fails=2 fail_timeout=30s;
    }    

         这三台服务来提供我当前blog项目的一个服务、weight暂时我们配置一样,因为本身就在一个机器上。打个比方说,现在有100个请求过来了,可能50%到28082的服务上了,30%到28081服务上去了,20%到28080服务上去了,我的理解是这样的,可能跟机器本身的一个性能指标也有关系。


服务器启动部署:


场景:

        1、模拟一个场景,当前服务我对外提供了一个接口,能力是返回用户的文章列表(

        就提供这个接口,不需要登录,不需要健全,你给我用户Id,

        我就给你返回用户的文章列表)。

/v1/article/{userId}/getAllarticle
    
    @GetMapping("/{userId}/getAllArticle")
    @ResponseBody
    public ResponseJson getAllArticleById(HttpServletRequest request,
                                          HttpServletResponse response, @PathVariable String userId){
        if(!StringUtils.hasText(userId)){
            return getFailResponseJson(null,"用户名Id为空。sessionId:"+request.getSession().getId());
        }
        if(!"u12138".equals(userId)){
            return getFailResponseJson(null,"用户名Id错误。sessionId:"+request.getSession().getId());
        }
        List articleInfoList = new ArrayList<>();
        ArticleInfoImpl articleInfo = new ArticleInfoImpl();
        articleInfo.setId(userId);
        articleInfo.setArticleAuthor("清风半夜鸣蛙");
        articleInfo.setArticleTitle("单个机器的多应用部署,解决session问题。");
        articleInfo.setArticleDescritpion("简介:当我们的用户量不断在上升的同时," +
                "尽管我们可用通过升级现有机器配置来提高性能,但综合考虑,增加机器的数量,采用集群部署的解决方案性价比会更高...");
                articleInfoList.add(articleInfo);
        return getSuccessResponseJson(articleInfoList,
                "文章列表获取成功。sessionId:"+request.getSession().getId());
    }

        2、请求验证

         本地先把这个接口跑通。

         然后上服务器测试。

        3、 服务启动了

        本来这个地方打印的时候,当前端口和sessionid的打印是前后两行的,

        但是迟迟打印不出来,服务看起来启动起来了,但是页面一直刷新不出来

        。这个地方后面持续跟踪一下 ,日志记录一下。

        此时服务已经请求到了28081上。看起来本身代码存在问题,像security的配置,

        以及跨域问题上没有彻底解决。

        但是。。。。不影响我测试本次主题,session的问题,等一会就好了。如果请求三个服务都

        走一遍,也就是要卡三次。

这个地方不用等到下次,直接开始调试

Springboot jar包远程调试_点滴记录,积流成河!-CSDN博客_springboot远程调试对于运行在服务器上面,隐藏较深,通过日志也排查不出的问题,有的时候需要通过本地调试来一步步排错,教过好些同事远程调试所需配置步骤,特此用笔记录下来,避免重复劳动。一、idea打包二、install 后jar包位置三、运行程序(远程调试启动)找到jar所在路径,进入cmd窗口,命令如下,监听启动5005端口(和程序的端口8089没关系)-远程调试启动语句:// 找到...https://blog.csdn.net/winy_lm/article/details/86002526自己的话。启动的时候,指定好调试端口,然后阿里云放开相关的端口,idea直接开始搞调试

// 找到对应的jar包目录,cmd窗口中执行下面语句即可
java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n -jar mac-test-0.0.1-SNAPSHOT.jar

        如果只是解决问题,启只能动一台服务了,免得你要多次请求试探才能到指定的服务上去。

        最终定位到是这个地方卡住了。 

        sesion在创建sesionId的时候,会先产生一个随机数

java.util.Random#nextInt()

        具体是这个地方卡住了。查阅了一下资料,果然跟随机数有关系

https://blog.csdn.net/lsm135/article/details/77801052https://blog.csdn.net/lsm135/article/details/77801052        通过上面的方法解决之后,开始重启,看一下效果。

        改完之后,页面刷新的很快。此时我保证了我单应用是没问题的。

         4、启动三个服务

        奇怪的问题增加了。此时请求的jsessionid和响应的jsessionId是不一样的。导致重定向到了登录界面。但是我们对这个请求并没有任何的过滤,所以按理说不应该跳转到登录界面的。 


暂停更新blog-demo,一段时间后再更新。写shell脚本去了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/344811.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号