资讯专栏INFORMATION COLUMN

Spring Boot重启后服务第一次访问时间慢的一次调优记录

winterdawn / 2296人阅读

摘要:分别在几个环境中跑相同代码,发现是网络影响的调用三方服务返回时间波动。调优基于业务需求,更改调用三方服务方法为异步调用。

背景
今天和分子公司合并服务接口(降低成本),对方反应我这边有个服务慢,搞了一天,就顺便记录下
服务调优 1. 网络

由于生产机和测试机在机房处于不同网段,网络环境质量有差异,最开始怀疑的是网络导致的。分别在几个环境中跑相同代码,发现是网络影响的调用三方服务返回时间波动。

2.调优

基于业务需求,更改调用三方服务方法为异步调用。嗯!应该没问题了。

3.验证

进行优化验证,发现调用平均时长有明显降低(废话)。但是,但可是,发现了新问题,在spring boot启动后第一次调用本服务,耗时仍旧远远高于后续调用,正常在20ms/次,第一次平均在600ms/次,于是开始google

于是看到了这个提问
https://segmentfault.com/q/10...
修改项目

在查看Dockerfile后,发现启动脚本中有加如下参数

JAVA_ALL_OPTS=" -Djava.security.egd=file:/dev/./urandom "

继而想修改docker基础镜像中jre的java.security文件
遂在Dockerfile中增加如下shell

sed -i "117csecurerandom.source=file:/dev/./urandom" /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security

就是用shell 替换了文本的内容

结论

其实,也没有明显的效率提升,服务首次加载还是比之后慢。所以考虑,是不是文件是不是没有改全(待完成,还没验证)

最后,通过验证发现一个规律,假设有A B两个服务,在Spring Boot 启动后,
如果先首次访问A,那么B的首次访问时间会缩短,但是还是会高于第二次及以后的访问时间
如果先首次访问B,那么A的首次访问时间会缩短,但是还是会高于第二次及以后的访问时间

因此,在Spring boot启动后,第一个被访问的服务耗时一定大于第二个被访问的服务,且每个服务之后的访问时间一定小于本服务第一次被访问的时间。

暂时就这么多,这是个记录。
之后会对基础镜像中jdk里面的java.security进行修改,如果有效果 会再更新。


刚才又找了一下,发现jdk目录里没有java.security,是我秀逗了

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27785.html

相关文章

  • Spring Boot重启服务一次访问时间慢的一次调优记录

    摘要:分别在几个环境中跑相同代码,发现是网络影响的调用三方服务返回时间波动。调优基于业务需求,更改调用三方服务方法为异步调用。 背景 今天和分子公司合并服务接口(降低成本),对方反应我这边有个服务慢,搞了一天,就顺便记录下 服务调优 1. 网络 由于生产机和测试机在机房处于不同网段,网络环境质量有差异,最开始怀疑的是网络导致的。分别在几个环境中跑相同代码,发现是网络影响的调用三方服务返回时间...

    plus2047 评论0 收藏0
  • 一次性能优化,单台4核8G机器支撑5万QPS

    摘要:前言这篇文章的主题是记录一次程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。因为我们的连接数只有,一旦请求过多,势必会导致数据库瓶颈。我们再次压测,结果显示万,服务器数据库连接正常,连接正常,响应时间平均为,错误率为。 前言 这篇文章的主题是记录一次Python程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。为大家提供一个优化的思路,首先要声明的一点是,我的方式...

    Barry_Ng 评论0 收藏0
  • 高性能Java代码的最佳实践

    摘要:高性能代码的最佳实践前言在这篇文章中,我们将讨论几个有助于提升应用程序性能的方法。要获得有关应用程序需求的最好最可靠的方法是对应用程序执行实际的负载测试,并在运行时跟踪性能指标。 showImg(https://segmentfault.com/img/bVbtgk4?w=256&h=254); 高性能Java代码的最佳实践前言 在这篇文章中,我们将讨论几个有助于提升Java应用程序性...

    stackfing 评论0 收藏0
  • 业务运维部门的岗位价值与DCOS

    摘要:数据中心操作系统以和等新一代创业公司为代表,开始提出数据中心操作系统的概念。数据中心操作系统与开发方有一个非常清晰和低成本的接入接口,完全省去了运维这个角色写胶水脚本的必要性,从而彻底颠覆这个岗位。 岗位价值有: 权限缩小 提供操作安全的保险服务 提供操作的可扩展性 提供业务和资源能见度 屏蔽资源的部署细节 静态资源调平 动态资源调平 故障处理和善后 权限缩小 通过配置文件修改...

    Andrman 评论0 收藏0
  • Spring-Boot学习笔记

    摘要:学习笔记使用很容易创建一个独立运行运行内嵌容器准生产级别的基于框架的项目,使用你可以不用或者只需要很少的配置。异常消息如果这个错误是由异常引起的。错误发生时请求的路径。 Spring-Boot 1.5 学习笔记 使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很...

    curlyCheng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<