一、什么时机可以使用DynamicPropertyFactory.getInstance()读取配置

如果用spring,在place holder加载之后就可以使用,加载bean的过程中就可以读。 CSE初始化,是使用place holder来初始化的。 果要在更加之前读取, 只能使用local configuration, 具体可以参考java-chassis的config-cc代码实现:

https://github.com/apache/servicecomb-java-chassis/blob/master/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterConfig.java

二、io.vertx.core.VertxException: Connection was closed 可能原因

在做超时测试的时候,发现抛出如下异常:

2018-12-06 16:12:02,005 [ERROR] invoke failed, invocation=CONSUMER rest AutoProvider.serverMvc.SayHello org.apache.servicecomb.swagger.invocation.exception.DefaultExceptionToProducerResponseConverter.convert(DefaultExceptionToProducerResponseConverter.java:35)
io.vertx.core.VertxException: Connection was closed
2018-12-06 16:12:02,005 [WARN] bizkeeper command CONSUMER rest AutoProvider.serverMvc.SayHello failed due to InvocationException: code=490;msg=CommonExceptionData [message=Cse Internal Bad Request] org.apache.servicecomb.bizkeeper.BizkeeperCommand.lambda$null$1(BizkeeperCommand.java:82)
2018-12-06 16:12:02,005 [WARN] bizkeeper execution error, info=cause:InvocationException,message:InvocationException: code=490;msg=CommonExceptionData [message=Cse Internal Bad Request];cause:VertxException,message:Connection was closed org.apache.servicecomb.bizkeeper.BizkeeperHandler$1.onExecutionError(BizkeeperHandler.java:55)
2018-12-06 16:12:02,006 [WARN] catch error in bizkeeper:Consumer.AutoProvider.serverMvc.SayHello failed and fallback disabled. org.apache.servicecomb.bizkeeper.BizkeeperHandler.lambda$handle$0(BizkeeperHandler.java:79)

预期是客户端得到超时异常,但是实际捕获到了Connection was closed异常。

最后检查是服务端配置了如下配置项:

servicecomb.rest.server.connection.idleTimeoutInSeconds = 1

由于服务端设置了连接限制时间,关闭了连接。 当处理时间超过1秒的时候,就会出现这个异常了。

三、InvocationException: code=500;msg={message=Timeout when processing the request.}

2018-12-11 13:58:53,387|ERROR|pool-2-thread-5|1zcbErzhtZP7Lv4Im9m|httpclient.CBCHttpClientUtils 484|Failed to execute http request. Exception
InvocationException: code=500;msg={message=Timeout when processing the request.}
       at org.apache.servicecomb.swagger.invocation.exception.ExceptionFactory.d**ate(ExceptionFactory.java:74)
       at org.apache.servicecomb.swagger.invocation.exception.ExceptionFactory.create(ExceptionFactory.java:61)
       at org.apache.servicecomb.swagger.invocation.Response.create(Response.java:93)
       at org.apache.servicecomb.transport.rest.client.http.DefaultHttpClientFilter.extractResponse(DefaultHttpClientFilter.java:105)
       at org.apache.servicecomb.transport.rest.client.http.DefaultHttpClientFilter.afterReceiveResponse(DefaultHttpClientFilter.java:128)
       at org.apache.servicecomb.transport.rest.client.http.RestClientInvocation.lambda$processResponseBody$7(RestClientInvocation.java:200)
       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       at java.lang.Thread.run(Thread.java:748)

这个异常发生在客户端。 和客户端请求超时不同,这个异常是服务端返回的错误,代表一个请求在服务端队列里面排队超过了设置的超时时间,服务端丢弃这个请求,不再处理。 可以通过servicecomb.rest.server.requestWaitInPoolTimeout设置这个排队时间,默认是30s。

但是通常30s已经是非常长的时间了,设置的太长, 还会触发客户端超时等。 需要做一系列其他配置。 所以一般这种情况发生的时候,需要考虑优化服务端性能。如果已经达到设计的系统上限,那么可以忽略这个错误。

四、Key/certificate is mandatory for SSL

启动CSE的服务的时候,报告:Key/certificate is mandatory for SSL

报告这个错误,是因为启用ssl的情况下需要配置证书。 可以参考这里https://docs.servicecomb.io/java-chassis/zh_CN/security/tls.html进行配置。

配置项里面的路径受ssl.sslCustomClass: org.apache.servicecomb.demo.DemoSSLCustom这个实现类的影响,可以定制他的实现。 缺省情况从当前工作目录查找配置的文件名。

五、Thread[transport-vert.x-eventloop-thread-4,5,main] has been blocked for 30711 ms, time limit is 2000

这个错误代表evenloop线程被阻塞,超过了缺省的2000ms限制,会打印阻塞堆栈。 从下面的堆栈有个核心行:

at org.apache.servicecomb.core.executor.ReactiveExecutor.execute(ReactiveExecutor.java:30)

可以看出,业务逻辑和处理链逻辑是采用reactive模式执行的。如果是edge service(网关服务),缺省就是reactive模式。当在网关出现这个错误的时候,很多时候就需要调整代码实现,将阻塞代码改为异步的方式。

ServiceComb/CSE常见问题处理(1812)相关推荐

  1. 微服务启动顺序_基于华为云CSE微服务接口兼容常见问题

    微服务接口兼容常见问题 在进行微服务持续迭代开发的过程中,由于新特性在不停的加入,一些过时的特性在不停的修改,接口兼容问题面临巨大的挑战,特别是在运行环境多版本共存(灰度发布)的情况下.本章节主要描述 ...

  2. 基于华为云CSE微服务接口兼容常见问题

    微服务接口兼容常见问题 在进行微服务持续迭代开发的过程中,由于新特性在不停的加入,一些过时的特性在不停的修改,接口兼容问题面临巨大的挑战,特别是在运行环境多版本共存(灰度发布)的情况下.本章节主要描述 ...

  3. CSE强契约模式常见问题和应对策略

    [摘要] 本文介绍了CSE强契约的常见问题,以及针对缺省值.控制消息.异常处理的开发建议. CSE框架基于强契约,服务之间的交互都需要参考和验证契约信息. 缺省值问题 契约本身是一个平台和语言无关的信 ...

  4. java接口常见问题分析_常见问题 - Apache ServiceComb

    Q: ServiceComb和SpringCloud是什么关系,具体的应用场景是什么? A: ServiceComb是华为基于内部多个大型IT系统实践提炼出来的一套微服务开发框架,在开发态基于最佳实践 ...

  5. Spring MVC DispatcherServlet改造为 CSE RestServlet 常见问题汇编

    [摘要] 本文是使用CSE RestServlet替换Spring MVC DispatcherServlet常见问题汇总. 将Spring Boot的REST应用改造为CSE的REST应用的核心部分 ...

  6. ServiceComb java-chassis和CSE java-chassis的区别

    [摘要] 本文从功能集合.版本管理和使用限制等方面介绍开源SDK和商业SDK的区别. 针对开发者的常见疑问,本文从功能集合.版本管理和使用限制等方面介绍开源SDK和商业SDK的区别.为了简单,下面用S ...

  7. 基于Spring Boot 2.0的IoT应用集成和使用CSE实践

    本文通过一个IoT的应用展现在Spring Boot 2.0中集成和使用CSE.IoT应用原来使用Spring Boot 2.0开发,通过少量的步骤集成CSE,然后展现了集成后带来了哪些新特性,以及中 ...

  8. Spring Cloud应用接入华为云微服务CSE

    概述 Spring Cloud应用可以方便的接入CSE提供的基础服务.接入CSE服务有如下好处: 开发者可以专注于业务系统的开发,把精力从中间件的可靠性评估.集群部署.运维监控等复杂的事情中解放出来. ...

  9. Spring Boot 2.0集成和使用CSE

    点击上方"微服务蜂巢"可以订阅哦 本文通过一个IoT的应用展现在SpringBoot 2.0中集成和使用CSE.IoT应用原来使用SpringBoot 2.0开发,通过少量的步骤集 ...

最新文章

  1. Discovery studio画蛋白质构象叠合图
  2. 2018 Multi-University Training Contest 7 - Age of Moyu
  3. python在删除对象时会自动调用析构函数_Python面向对象程序设计构造函数和析构函数用法分析...
  4. [No0000111]java9环境变量配置bat
  5. Django REST框架 -1
  6. c语言程序设计报告调试分析,C语言程序设计情况分析报告资料.doc
  7. 机器学习实战——KNN及部分函数注解
  8. c语言p1-melepeo,C语言做个学生选课系统 -电脑资料
  9. 异步消息队列Celery
  10. PyTorch学习笔记——词向量简介
  11. 老男孩Day3作业:工资管理系统
  12. UNIX环境高级编程(第2版)
  13. Print2Flash 3汉化破解版下载
  14. 通过使用第三方开源jar包sigar.jar我们可以获得本地的信息
  15. C++嵌套循环打印字母表
  16. 抖音上面那些暴力引流套路!赚到月入过万!
  17. 【ZJOJ1321】灯
  18. Android实现自定义铃音
  19. 微信公众平台模拟登陆和发送消息详解
  20. 噩梦射手(SurvivalShooter)教程(五)

热门文章

  1. 【升级版学生信息管理系统员工工资信息管理系统】+文件操作+更多细节
  2. 买笔记本必须带 9款小巧测试软件推荐
  3. oracle rman部分恢复,Oracle中使用RMAN备份及一些恢复方法
  4. 海龟汤和海龟汤升级版的改进
  5. 摸鱼必备!天涯论坛神帖合集 200余篇 PDF
  6. NestedScrollView和ScrollView常见问题总结
  7. obs媒体源没有声音_最常用的直播软件OBS使用教程图解
  8. Java 端口号的取值范围是怎样的?
  9. 你的计算机配置似乎是正确的,但该设备或资源(DNS服务器)没有响应
  10. Unicloud 阿里云服务器作图床,从上传到部署api全流程