问题排查
文章平均质量分 65
问题排查
cyh男
这个作者很懒,什么都没留下…
展开
-
Failed to submit application_1662088449147_0004 to YARN : User sfapp cannot submit applications to q
提交MR任务,报无队列权限问题原创 2022-09-02 14:04:55 · 1757 阅读 · 1 评论 -
使用easyexcel时遇到Could not initialize class cglib.beans.BeanMap
maven依赖问题排查原创 2022-06-14 10:12:43 · 327 阅读 · 0 评论 -
java设置远程代理
问题配置代理后,在linux上能curl某接口但是应用代码中通过http访问却不行分析发现telnet连不上,但curl可以。因为curl走了代理,telnet不会走代理,所以java调用时会报连不上的错误。解决应用的启动参数加上代理设置java -Dhttp.proxyHost=ip -Dhttp.proxyPort=port -Dhttps.proxyHost=ip -Dhttps.proxyPort=port ...原创 2022-01-26 13:47:37 · 214 阅读 · 0 评论 -
ORA-27102: out of memory
问题背景使用Flink Oracle CDC组件<dependency> <groupId>com.ververica</groupId> <artifactId>flink-connector-oracle-cdc</artifactId> <version>2.1.0</version> </dependency>程序在运行一段原创 2022-01-18 19:02:52 · 2817 阅读 · 0 评论 -
spring aop中ms.getMethod().getAnnotation拿不到注解信息
问题场景注解如下public @interface GlobalQueueLock { String mode() default "block"; String lockName() default "globalQueueLock"; int expire() default 30;}aop pointcut如下 @Pointcut("@annotation(com.sf.annotation.GlobalQueueLock)") public void p原创 2022-01-12 13:58:14 · 1440 阅读 · 0 评论 -
Java HTTP接口返回数据乱码
问题场景使用hutool工具类发起get请求,代码如下String res = HttpUtil.get(url, Charset.forName("UTF-8"));实际返回结果没有中文,但还是显示乱码,如下问题分析结合这篇文章给的思路(关于Http请求后返回json乱码的问题),并结合源码,发现HttpUtil默认会给请求头加上Accept-Encoding: gzip, deflate设置代码如下导致hutool后续处理时,使用GZIP流解析响应结果而服务端可能并不是GZIP原创 2021-12-11 12:48:36 · 3173 阅读 · 0 评论 -
Spring中Primary注解在项目中的解决方案
项目背景项目采用springboot+mybatis-plus+druid。其中druid数据源供mysql使用,信息配置在yml文件中:spring: main: allow-bean-definition-overriding: true profiles: active: dev application: name: iotp datasource: url: jdbc:mysql://${mysql.ip}:3306/idap?character原创 2021-07-28 14:32:44 · 383 阅读 · 0 评论 -
java线程池的核心线程数过少引发的血案
前置条件项目采用如下线程池 private static final ExecutorService CACHED_THREAD_POOL = new ThreadPoolExecutor(4, 40, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(1024), NAMED_THREAD_FACTORY, new AbortPolicy());其中核心线程数为4,最大线程数为40。往线程池提交任务的逻辑如下 Threa原创 2021-06-25 13:37:18 · 756 阅读 · 0 评论 -
java Instant与mysql时间对不上
文章目录前置条件问题描述问题解决前置条件1.mysql时间字段字段类型为某条记录的时间为2021-05-19 14:01:342.java时间字段字段类型为Instant createTime;3.代码中jdbc连接信息spring: datasource: url: jdbc:mysql://${mysql.url}:3306/idap?characterEncoding=UTF-8&rewriteBatchedStatements=true&so原创 2021-05-19 15:32:20 · 809 阅读 · 0 评论 -
项目maven依赖冲突问题排查思路
文章目录前言问题场景问题分析1.分析异常链路,找到报错代码2.断点跟进3.对比其他正常项目4.分析依赖树,看是哪里引入了jsp-api包问题解决前言先介绍下接口字段校验的框架Java服务端接口参数校验框架——hibernate-validator使用。我们项目采用的springboot,在web依赖中已经封装了该框架,如下所以可以直接使用,无需再引入其他依赖。这里仅贴出一段在项目中用到的、和问题有关的代码,如下ValidationUtils类private static final Vali原创 2021-05-15 18:04:42 · 1736 阅读 · 0 评论 -
Java引用传递遇到的一个问题
问题场景在项目中有这样一段伪代码:A方法调用B方法,传入引用类型的入参C。B方法在业务处理后将新的引用指向入参。在A方法调用完B方法后,会继续操作入参C。A方法如下void A(){ .....业务处理 //C是一个对象 C c = ... //调用B方法 void B(c) .....业务处理,继续操作参数c}B方法如下void B(入参){ .....业务处理 入参 = 新的引用 .....业务处理}本来以为B方法对参数引用进行修改后,原创 2021-05-15 17:01:21 · 169 阅读 · 0 评论 -
java子类重写父类后的泛型类型返回值
在java中,子类重写父类方法时,子类的返回值可以和父类相同,或者为父类的子类。比如abstract class Parent{ abstract Parent test();}class Son extends Parent{ @Override Son test() { return new Son(); }}而如果父类返回值包括泛型类型,那么子类重写时,如果返回值的泛型类型是父类泛型的子类,此时会报错 abstract class原创 2021-04-29 18:27:22 · 2088 阅读 · 0 评论 -
Hive on TDengine关联其他数据源查询的问题
数据源介绍2.3.8版本的hive创建了多张表:fvp是TDengine的表,enpoint是Mysql的表,dn是TDengine的表,这三者都是使用JdbcStorageHandler创建的,底层对应的InputFormat都为JdbcInputFormat。student是原生HDFS上的数据,对应的InputFormat为TextInputFormat。问题场景在hive中执行如下sqlselect count(*) as count from fvp inner join endpoi原创 2021-04-27 18:04:49 · 706 阅读 · 0 评论 -
java的appendReplacement方法去除反斜杠
问题场景项目中维护的一个字符串常量的内容为(\\d{2}:\\d{2}:\\d{2}.\\d{3})在业务逻辑中使用Matcher类的appendReplacement方法,将该常量写入StringBuffer中String str = "(\\d{2}:\\d{2}:\\d{2}.\\d{3})"StringBuffer sb = new StringBuffer();Matcher m = r.matcher(moduleFileContent);//moduleFileContent为另原创 2021-04-08 18:18:03 · 1500 阅读 · 0 评论 -
项目中多线程修改同一引用引发的线程安全问题
问题描述项目中存在如下伪代码:其中customThreadPool变量是项目自定义的线程池,fileBeatInstanceDTO变量是线程池外部创建的一个对象。最后issueOperator.operateWhenFirstDeploy方法接收fileBeatInstanceDTO参数。FileBeatInstanceDTO fileBeatInstanceDTO = new FileBeatInstanceDTO(); ...... ...... //赋值 fileBeatInstanc原创 2021-03-30 17:25:31 · 312 阅读 · 0 评论 -
falcon-agent模块代码里执行sys.CmdOutBytes命令导致的问题
背景介绍在agent模块提供了一个方法,方法里的主要逻辑是通过内置的sys.CmdOutBytes函数,调用linux的sh -c命令。http.HandleFunc("/run", func(w http.ResponseWriter, r *http.Request) { if r.ContentLength == 0 { http.Error(w, "body is blank", http.StatusBadRequest) return } bs, err := io原创 2021-03-23 09:16:56 · 273 阅读 · 0 评论 -
kafka的producer执行卡住的问题
前言在我前面写的一篇文章中(线上cpu过高的排查思路),提到了网关项目由于抗不住大量数据导致疯狂GC的问题。在解决这个问题之后,我在项目调用下游系统逻辑后加了一段逻辑————往自己搭建的kafka发送数据问题刚开始启动的时候,通过日志发现数据能发送kafka,过了一段时间后,日志没有再打印了。而且每次重新启动都是这个现象。原以为是外部没有再发送监控数据,所以kafka也不会收到。但是奇怪的是,为什么只有在刚启动那段时间才发送后面,就不发送了?断点分析通过打远程断点发现,刚开始启动那会,断点原创 2021-03-06 12:57:54 · 710 阅读 · 0 评论 -
springboot测试类的子线程中注入对象报错
问题场景springboot测试类某方法如下:启动子线程,每个线程调用monitorPluginService.issueHostPlugin方法@RunWith(SpringRunner.class)@SpringBootTest(classes = Application.class)@ContextConfiguration@Slf4jclass MonitorPluginServiceImplTest { @Autowired private MonitorPlugi原创 2021-02-20 16:36:20 · 260 阅读 · 0 评论 -
同时使用 @Transactional和@Async出现的报错
问题场景在上一篇文章中spring中autowired注入自己的代理后,最后容器中的对象是原对象还是代理对象,我们谈到了在spring中autowired注入自己的代理后,最后容器中只有一个对象。现在我们给文章中涉及的代码加@Async注解@Servicepublic class UserRightService { @Autowired private UserRightService userRightService; @Transactional @Async原创 2021-02-03 17:49:25 · 3567 阅读 · 1 评论 -
mysql插入语句的大小超出限制的问题
问题项目需要插入十几万条数据到mysql,考虑到一次插入一条速度太慢,于是使用了insert语法的批量插入,java代码如下 List<List<MonitorObjectRule>> partition = Lists.partition(needInsertList, 10000); for (List<MonitorObjectRule> rules : partition) { monitorObjectRuleMapper.bat原创 2021-02-01 21:50:22 · 1534 阅读 · 1 评论 -
rabbitmq批量确认结合qos导致的消费者假死和消息丢失问题
代码项目使用的是springboot整合rabbitmq。其中消费者代码如下,用的是手动批量确认模式@Slf4j@Componentpublic class MessageListener { @RabbitListener(queues = "jack.queue") public void process(@Payload String message, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag, Channel ch原创 2021-02-01 21:47:50 · 1360 阅读 · 0 评论 -
使用@Async时出现Cannot find current proxy: Set ‘exposeProxy‘ property on
问题场景A类的某个方法B加了@Async注解,且方法中使用AopContext.currentProxy()获取A类的代理对象。结果B方法运行时报错:Cannot find current proxy: Set ‘exposeProxy’ property on Advised to ‘true’ to make it available, and ensure that AopContext.currentProxy() is invoked in the same thread as the AO原创 2021-02-01 21:47:21 · 1327 阅读 · 0 评论 -
mvc异常处理器未捕获到自定义异常
问题场景项目自定义了一个异常, 并在异常处理器进行处理在使用easyexcel的listner进行导入的时候,如果不符合要求则抛出GlobalException最后发现并未被异常处理器的handleGlobalException方法捕获到分析1当导入逻辑抛出异常时,通过打断点发现进入ExceptionHandlerExceptionResolver类的doResolveHandlerMethodException方法,而触发异常处理器的逻辑就如下图画红框的方法。经过层层调用,最后发现该异常匹配原创 2021-02-01 21:47:05 · 435 阅读 · 0 评论 -
Commit cannot be completed since the group has already rebalanced and assigned the
问题场景我们项目有个订单出库的业务,作为消费者去消费商城项目给我们发的消息。某次突然出现大批订单的出库状态没改的情况,拉日志一看,报了如下异常。org.apache.kafka.clients.consumer.CommitFailedException: Commit cannot be completed since the group has already rebalanced and assigned the partitions to another member. This means t原创 2021-02-01 21:45:58 · 2944 阅读 · 0 评论 -
atomikos数据源报错Max number of active transactions reached
问题springboot项目使用的atomikos数据源。某次在生产环境执行逻辑时报错,查看日志发现如下错误源码分析通过日志发现报错是在TransactionServiceImpl中发生的,该类关键代码如下可知原因是map中保存的事务对象数量达到了默认值50,所以报错。通过断点知道默认值是在如下配置中同时我们也可以覆盖默认配置,配置方式为在application.properties中spring.jta.atomikos.properties.max-actives=-1-1表示无限制原创 2021-02-01 21:45:31 · 1732 阅读 · 0 评论 -
spring aop切面返回值与原方法返回值不一致的问题
问题场景在aop around方法里返回void,但是原方法返回为int,结果执行时抛异常Null return value from advice does not match primitive return type for,原方法如下 public int insert(LogRequestModel model) { return logMapper.insert(model); }aop around方法如下@Around("cut()") pub原创 2021-02-01 21:42:49 · 2381 阅读 · 0 评论 -
Either pull the method up to an interface or switch to CGLIB proxies by
问题描述:Need to invoke method ‘refreshHostGroupAlarmTarget’ declared on target class ‘FalconGrpHostServiceImpl’, but not found in any interface(s) of the exposed proxy type. Either pull the method up to an interface or switch to CGLIB proxies by enforcing pr原创 2021-02-01 21:42:41 · 3910 阅读 · 1 评论 -
使用InheritableThreadLocal解决子线程不会与主线程共享请求的问题
参考博文 传送门问题场景采用ForkJoin处理子任务时,任务里方法的参数要传HttpServletRequest,我是把外层的request传进去,结果报No thread-bound request found: Are you referring to request attributes outside of an actual web re问题分析开启子线程后,子线程不会与主线程共享请求解决方法ServletRequestAttributes servletRequestAttrib原创 2021-02-01 21:41:24 · 629 阅读 · 0 评论 -
atomikos数据源连接超时和耗尽问题
问题描述项目里之前用的是原生druid数据源,没有任何问题。后来使用了AtomikosDataSourceBean,其中用的DruidXADataSource数据源,java配置如下 @Bean(name = "bdpDatasource") public DataSource bdpDatasource() { DruidXADataSource druidXADataSource = new DruidXADataSource(); druidXADataS原创 2021-01-24 19:36:06 · 3957 阅读 · 2 评论 -
python脚本加斜杠执行和用python执行
问题场景项目某个业务是将python脚本下发到linux机器上,然后通过open-falcon的agent模块调度执行脚本。结果查看生产环境的agent日志,发现agent调度执行脚本时报错了。问题排查先让运维在机器上手动执行,看下是否有问题python 脚本名.py发现没有问题,脚本运行正常。但是为什么agent调度执行就不行呢?问同事才知道agent调度执行时,不是用上述命令跑的,而是./脚本名.py于是用该命令手动执行脚本,发现报的错和生产一样!虽然现在还不知道具体原因,但至少本地原创 2021-02-01 21:36:32 · 294 阅读 · 1 评论 -
Java线上项目cpu过高的排查思路
项目介绍是给银行做的一个征信系统项目,业务如图代码如下问题项目在linux运行一段时间后,发现cpu占用率越来越高,最终达到100%排查步骤1.top命令找到cpu占用高的进程号发现进程号为27322.查看进程的所有线程信息,记下占用最高的线程执行命令,单独监控该进程top -p 2732在界面按下H,获取当前进程下所有线程信息占用cpu最高的线程为2734**3.将第2步得到的线程号转化为十六进制 **将2734转化为十六进制数**4.查看进程堆栈信息 **根据第1原创 2021-01-28 09:16:17 · 5992 阅读 · 1 评论 -
分布式缓存和本地缓存的一致性在项目中的解决方案
业务逻辑1.放入缓存A项目修改或者创建采集模型时,通过http接口调用B项目,B项目将信息放入redis,同时放入本地map缓存。缓存的key为模型的token,value为模型的所有采集字段代码如下private ConcurrentHashMap<String, Map<String,String>> tokenAndColumns = new ConcurrentHashMap()<>;............ public static Re原创 2021-01-28 17:29:58 · 2639 阅读 · 2 评论