开发常见问题|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习开发常见问题

开发者学堂课程【企业级分布式应用服务 EDAS 使用攻略:开发常见问题】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/359/detail/4216


开发常见问题

内容介绍:

一、应用报错

二、HSF 服务调用出错

三、容器参数配置


一、应用报错

进入官网的详情页,打开 EDAS 开发者指南,点击查看最后一大部分 FAQ 查看 EDAS日志说明。开发中遇到的很多问题,都可以通过查看相关日志,找到问题所在进而解决问题。

EDAS 日记包括4个日志文件,通过前2个日志文件是在 tomcat 下的 cattalina.out 和localhost.log,通过这两个日志文件即可查询得知应用在启动过程中报错的原因,这两个日志文件的目录分别为:“/home/admin/taobao-tomcat-production-××××/logs/catta

lina.out”和“/home/admin/taobao-tomcat-production-××××/logs/localhost.log.×××”

比较通常的错误,如 no search method 或class not found 等通用错误,都可以在网上找到解决方案。此外,应用组件中报出的错误需要根据业务实际情况进行check。

后面的两个日志文件为 config.client.log 和 hsf.log, 这两个日志文件的目录分别为”/home/admin/configclient/logs/config.clien

t.log”和“/home/admin/logs/hsf/hsf.log”当应用在 HSF 服务在发布、注册会校用过程中出现的错误都会出现在这两个日志文件中。

总之,当应用报错时,可以在log中查询报错的原因,进而在网站上查询解决方法,或者查看应用的业务逻辑是否存在异常状态。

 

二、HSF服务调用出错

如 Consumer 调用 Provider 时可能会存在错误,这些错误可以通过 hsf.log 查询,或者若本地就存在 log 的输出,那本在本地的 log 输出中即可查询到错误原因。以下为通常情况下,HSF 服务调用报错的情况(每种错误都有不同的错误编码):

1.错误编码:HSF-0001

即无法找到调用的服务目标地址,需要使用的目标服务为:××××组别为:××××

解决方案:

(1)环境无关

①检查发布者和消费者配置的服务名称、版本号、组别三者是否一致(大小写也要相同,且不能有空格)

②服务调用太快(一般不会发生,可作为参考),在 configserver 将地址推送过来之前就发起调用导致出错,在服务消费者的配置项里添加 maxWaitTimeForCsAddress的相关配置。

(2)公共云、金融云、私有域等生产环境

①检查服务是否存在

②检查服务分组是否创建

③检查鉴权是否失败

通过以上方法,即可基本确定HSF服务调用报错的原因,进而解决问题。

2.错误编码:HSF-0002

即 HSF 服务调用时,消费端提示 HSFTimeOutException 报错,出现该错误的原因可能为:

(1)消费端调用服务端时,耗时大于了设置的超时时间,可能是由于 Provider 调用方法内部出错,导致无法返回以致超时;

(2)偶然情况下,两端出现 GC、检查服务端和客户端 gc 日志,耗时很长的 gc 导致超时;

3.错误编码:HSF-0021

即 [HSF-Provider]HSF thread pool is full,可以通过优化服务端的性能代码解决该问题。该错误主要是由于服务器端某个服务器处理速度过慢,不能及时处理客户端的请求,导致服务端业务执行的线程池达到最大值600(默认值),HSF 默认会 dump文件:

/home/admin/logs/hsf/HSF_JStack.log,查看此文件的 HSFBizProcessor.××× 线程模块信息,一般此时可以观察到具体是哪一层的业务逻辑 hang ,进而分析性能瓶颈,解决实际问题。

其他不常见的错误不作一一说明,可参照 EDAS 的 Trouble Shooting 进行解决方案的分析。


三、容器参数配置

在应用软件时,可能会对容器的参数进行配置,如最基本的 gvm 参数设置可根据 ECS 的配置及具体的业务需要 gvm 参数进行设置,通过 EDAS 即可进行设置。

也可能需要对 Tomcat 参数进行设置,如进行线程池的配置或调用 EDAS 已经提供的一些相关的容器参数配置。

相关实践学习
微服务实战-服务注册中心 - Nacos
Nacos是阿里巴巴于2018年7月发布的一个开源项目,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 支持几乎所有主流类型的服务的发现、配置和管理: Kubernetes Service  gRPC & Dubbo RPC Service  Spring Cloud RESTful Service  
相关文章
|
11月前
|
存储 Kubernetes 调度
如何驱逐某个节点上到某些名称空间的pod到其他节点
在 Kubernetes (k8s) 中,驱逐某个节点上特定命名空间的 Pod 到其他节点可以通过以下步骤实现: ### 步骤一:找到要驱逐的 Pod 首先,你需要找到位于特定命名空间并且运行在目标节点上的 Pod。你可以使用 `kubectl get pods` 命令并指定 `-o wide` 和 `--namespace` 参数来获取这些信息。 ```bash kubectl get pods -o wide --namespace=<your-namespace> ``` 此命令将返回指定命名空间中的所有 Pod,并显示它们的详细信息,包括所在的节点名称。 ### 步骤二:标记
853 4
|
12月前
|
缓存 开发框架 移动开发
uni-app:下载使用uni&创建项目&和小程序链接&数据缓存&小程序打包 (一)
uni-app 是一个跨平台的开发框架,它允许开发者使用 Vue.js 来构建应用程序,并能够同时发布到多个平台,如微信小程序、支付宝小程序、H5、App(通过DCloud的打包服务)等。uni-app 的目标是通过统一的代码库,简化多平台开发过程,提高开发效率。 在这一部分中,我们将逐步介绍如何下载和使用uni-app、创建一个新的项目、如何将项目链接到小程序,以及实现数据缓存的基本方法。
304 0
|
8月前
|
机器学习/深度学习 自然语言处理 语音技术
《探秘卷积神经网络:权重共享与局部连接的神奇力量》
卷积神经网络(CNN)中的权重共享和局部连接是其核心特性。权重共享通过同一卷积核在不同位置使用相同权重,减少参数量并提高泛化能力;局部连接则使每个神经元仅与输入的局部区域相连,专注于提取局部特征。两者相辅相成,显著降低计算复杂度,增强对空间结构的感知,使CNN在图像识别等领域表现出色。
475 8
|
JavaScript 安全
下载安装 vscode(含汉化、插件的推荐和安装)
下载安装 vscode(含汉化、插件的推荐和安装)
221 0
下载安装 vscode(含汉化、插件的推荐和安装)
|
弹性计算 Kubernetes 监控
阿里云ack学习
【8月更文挑战第6天】
1527 3
|
自然语言处理 Java 关系型数据库
ElasticSearch 实现分词全文检索 - id、ids、prefix、fuzzy、wildcard、range、regexp 查询
ElasticSearch 实现分词全文检索 - id、ids、prefix、fuzzy、wildcard、range、regexp 查询
337 0
|
存储 监控 算法
深入理解Java虚拟机(JVM)原理与调优技巧
深入理解Java虚拟机(JVM)原理与调优技巧
|
Arthas 人工智能 监控
JVM工作原理与实战(三十五):性能调优
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了性能调优、性能调优案例等内容。
445 1
|
数据采集 JavaScript 前端开发
常见的反爬虫策略有哪些?
常见的反爬虫策略有哪些?
740 1
|
存储 Dubbo Java
Spring Cloud Alibaba基础教程:与Dubbo的完美融合
Spring Cloud Alibaba基础教程:与Dubbo的完美融合
715 0
Spring Cloud Alibaba基础教程:与Dubbo的完美融合