<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>4 - 协议层 on Apache Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/</link><description>Recent content in 4 - 协议层 on Apache Dubbo</description><generator>Hugo</generator><language>zh-cn</language><atom:link href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/index.xml" rel="self" type="application/rss+xml"/><item><title>4-1 - 不支持的协议</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/1/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>这种情况可能出现在自定义 Protocol 的场景下。Dubbo 的 SPI 机制找不到 URL 中所指定的 Protocol。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;ol>
&lt;li>确定 Consumer 中有服务端所用到的 Protocol 的依赖。&lt;/li>
&lt;li>确定 Protocol 的依赖包的 SPI 配置文件的名字没有写错。&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>另请参阅
&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/spi/overview/">Dubbo SPI 概述&lt;/a>&lt;br>
&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/protocol/">协议扩展说明&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>4-2 - 序列化优化器初始发生错误</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/2/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>当前使用了 Kryo 和 FST 的序列化配置。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/serialization/">Kryo 和 FST 序列化&lt;/a>&lt;/p></description></item><item><title>4-3 - 接口引用调用失败</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/3/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>根据指定的协议参数，未找到暴露的服务接口或方法。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>可根据接口 URL 及方法名称，确认服务端是否存在。&lt;/p></description></item><item><title>4-4 - 非安全序列化方式</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/4/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>当前在使用非安全的序列化器, 并不推荐。具体配置为：&lt;code>serialization=&amp;quot;java&amp;quot;&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>Java 序列化是不安全的。Dubbo 团队不推荐任何人使用它。如果你仍然想使用它，请遵循 &lt;a href="https://openjdk.java.net/jeps/290">JEP 290&lt;/a> 来设置序列化过滤器，以防止反序列化泄露。&lt;/p>
&lt;/blockquote>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>修改&lt;code>serialization&lt;/code>的参数值. 将 protocol 内的序列化参数值修改为其他,如hessian2，fastjson2等。&lt;/p></description></item><item><title>4-5 - 流关闭异常</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/5/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>提示信息，不影响程序的执行结果。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>可通过一些第三方的工具或者&lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> 分析堆栈信息，进行定位。&lt;/p></description></item><item><title>4-6 - 反序列化失败</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/6/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/6/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>发生在使用自定义的序列化方式的时候，在自定义 SPI &lt;code>org.apache.dubbo.common.serialize.Serialization&lt;/code> 序列化方法在使用时发生错误。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>可通过一些第三方的工具或者 &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> 分析堆栈信息，获取引起错误的对象内容，再配合自定义实现进行修改。&lt;/p>
&lt;blockquote>
&lt;p>参考 &lt;a href="https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/serialize/">序列化扩展&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>4-7 - 关闭客户端时发生错误</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/7/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/7/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>见于各种 &lt;code>Connect Client&lt;/code> 进行&lt;code>close&lt;/code>或者&lt;code>destory&lt;/code>的时候报错，不影响最终效果。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>可通过一些第三方的工具或者 &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> 分析堆栈信息，进行定位。&lt;/p></description></item><item><title>4-8 - 关闭服务端时发生错误</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/8/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/8/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>与4-7相似，都是发生在close时。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>可通过一些第三方的工具或者&lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> 分析堆栈信息，进行定位。&lt;/p></description></item><item><title>4-9 - 解析失败</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/9/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/9/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>一般为参数值不符合规则，在强转时发生错误。
如：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-java" data-lang="java">&lt;span style="display:flex;">&lt;span>String timeoutString &lt;span style="color:#719e07">=&lt;/span> httpMetadata.headers().getFirst(TripleHeaderEnum.SERVICE_TIMEOUT.getHeader());
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Long timeout &lt;span style="color:#719e07">=&lt;/span> Long.parseLong(timeoutString);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Long timeout &lt;span style="color:#719e07">=&lt;/span> GrpcUtils.parseTimeoutToMills(timeoutString);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>invocation.put(CommonConstants.TIMEOUT_KEY, timeout);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>根据堆栈信息提示的 key 名称进行相对应的配置修改到符合转换规则即可。&lt;/p></description></item><item><title>4-10 - Triple 序列化结果失败</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/10/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/10/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>一般为内部错误。
见于三种log格式：&lt;/p>
&lt;ol>
&lt;li>在序列化并且发送数据时发生异常，日志格式为 &lt;code>Serialize triple request failed, service=%s method=%s&lt;/code>&lt;/li>
&lt;li>接收到response的reset code时触发,日志格式为：&lt;code>Triple Client received remote reset errorCode=xxx&lt;/code>&lt;/li>
&lt;li>处理response时有异常情况时触发，日志格式为： &lt;code>Meet Exception on ClientResponseHandler, status code is:xxx&lt;/code>&lt;/li>
&lt;/ol>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>针对第一种错误，是在调用{service}#{method}方法过程中出现的，具体对应到sendMessage，并且该日志与&lt;code>java.util.concurrent.ExecutionException: org.apache.dubbo.rpc.StatusRpcException: INTERNAL : Serialize request failed&lt;/code>同时出现，排查{method}方法参数中自定义类是否实现序列化接口导致序列化失败&lt;/p>
&lt;p>针对第二种错误，是Provider端处理发生错误，排查Provider端服务，排查方式参考第一种错误&lt;/p>
&lt;p>针对第三种错误，仅单元测试使用到，目前用户侧不会出现&lt;/p>
&lt;p>其次可通过一些第三方的工具或者 &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> 分析堆栈信息，进行定位。&lt;/p>
&lt;blockquote>
&lt;p>同时请在社区提交Issue，帮助我们更好的完善Triple
直接点击右上角 &lt;strong>提交项目问题&lt;/strong> 按钮即可快速链接至Github页面&lt;/p>
&lt;/blockquote></description></item><item><title>4-11 - 发起请求失败</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/11/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;ol>
&lt;li>服务方已关闭。&lt;/li>
&lt;li>调用方的 IP 不在服务方的白名单内。&lt;/li>
&lt;li>请求具体的地址服务不存在。&lt;/li>
&lt;/ol>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;ol>
&lt;li>检查服务方启动运行情况。&lt;/li>
&lt;li>检查或使用第三方工具，测试网络环境是否可正常连接。&lt;/li>
&lt;li>根据堆栈的 serviceName, 在管理平台里查看或模拟调用，看是否正常。&lt;/li>
&lt;/ol></description></item><item><title>4-12 - 创建Triple流失败</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/12/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/12/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>一般为内部错误。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>可通过一些第三方的工具或者 &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> 分析堆栈信息，进行定位。&lt;/p>
&lt;blockquote>
&lt;p>同时请在社区提交Issue。&lt;/p>
&lt;/blockquote></description></item><item><title>4-13 - 服务端超时</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/13/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/13/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;ol>
&lt;li>服务端逻辑处理相对耗时。&lt;/li>
&lt;li>服务端负载请求过高，无法响应。&lt;/li>
&lt;li>当前的超时参数设置阈值与现实情况相差较大。&lt;/li>
&lt;/ol>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;ol>
&lt;li>根据接口名称查看是否存在耗时处理情况。&lt;/li>
&lt;li>可监控服务器状态，及服务端调用的服务调用情况。&lt;/li>
&lt;li>尝试将超时参数调大一些。&lt;/li>
&lt;/ol></description></item><item><title>4-14 - 响应结果失败</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/14/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/14/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;ol>
&lt;li>服务端管道可能因网络原因暂时断开。&lt;/li>
&lt;li>当前使用版本较低或可检查当前的参数配置，是否启用 &lt;code>send.reconnect=true&lt;/code>, 高版本默认为 true。&lt;/li>
&lt;/ol>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;ol>
&lt;li>检查直连网络是否通畅，有无丢包现象。&lt;/li>
&lt;li>检查上述参数值，或尝试使用高版本。&lt;/li>
&lt;/ol></description></item><item><title>4-15 - 客户端流监听器</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/15/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/15/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>当收到服务端的响应之后，客户端流监听器会输出此信息，用于提醒。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3></description></item><item><title>4-16 - 服务已关闭</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/16/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/16/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>在错误的状态下继续调用 &lt;code>org.apache.dubbo.rpc.protocol.tri.service.TriHealthImpl#enterTerminalState&lt;/code> 或者 &lt;code>org.apache.dubbo.rpc.protocol.ReferenceCountInvokerWrapper#invoke&lt;/code>，在调用时已经是 terminal 或 destory状态。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>多次调用上述方法会进行提醒。一般仅用于单元测试。&lt;/p></description></item><item><title>4-17 - 关闭所有调用程序时发生错误</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/17/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/17/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>一般为内部错误。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>可通过一些第三方的工具或者 &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> 分析堆栈信息，进行定位。&lt;/p>
&lt;blockquote>
&lt;p>同时请在社区提交issue.&lt;/p>
&lt;/blockquote></description></item><item><title>4-18 - 无法从调用中获取服务模型</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/18/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/18/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>当前仅用于单元测试场景，服务模型默认会进行初始化。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3></description></item><item><title>4-19 - 参数值有出错的可能</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/19/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/19/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>这个错误码提示参数值可能不再正确。&lt;/p>
&lt;p>目前出现在同一个协议同时监听多个端口下。由于设计限制，单个协议只能监听一个端口，否则端口配置会被覆盖掉。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>调整协议和端口的监听关系。&lt;/p>
&lt;blockquote>
&lt;p>该错误码的意义已经调整。对于 Dubbo 3.1.4、3.2.0-beta.3 及其之前的版本的该错误码的出错，请参考错误码 &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/faq/0/2/">0-2&lt;/a>。&lt;/p>
&lt;/blockquote></description></item><item><title>4-20 - 数据解码失败</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/20/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/20/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>只发生在解码阶段，可能服务方和调用方的dubbo版本不匹配。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;p>检查当前使用的 dubbo 版本，尽量保持一致或向下兼容的高版本。&lt;/p></description></item><item><title>4-21 - 检测到不安全的序列化数据</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/21/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/faq/4/21/</guid><description>&lt;h3 id="可能的原因">可能的原因&lt;/h3>
&lt;p>当前服务端可能受到攻击或者是 Dubbo 内置的类检查逻辑没有扫描到您所定义的类。&lt;/p>
&lt;h3 id="排查和解决步骤">排查和解决步骤&lt;/h3>
&lt;ol>
&lt;li>如果请求源是攻击源，请及时进行安全加固。&lt;/li>
&lt;li>如果请求源是预期的，请在 &lt;code>security/serialize.allowlist&lt;/code> 资源文件中声明您所使用的类名，Dubbo 将自动将其加载到安全列表中。请参考 &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/security/class-check/">类检查机制&lt;/a> 一文。&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>当前 Dubbo 可以工作在监控模式和限制模式下。监控模式只打印日志，不进行拦截；限制模型将进行拦截。&lt;/p>
&lt;/blockquote></description></item></channel></rss>