一次登录接口502问题排查过程

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 一次登录接口502问题排查过程,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

概述

突然发现测试环境登录失败,api/login/captcha接口报错502
在这里插入图片描述
第一反应是去查看日志:

com.aaa.cachecloud.redis.clients.jedis.exceptions.JedisClusterMaxRedirectionsException: Too many Cluster redirections? key=59cdc8a2-a589-4381-aee9-f09c8d5650c8
at com.aaa.cachecloud.redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:101)
	at com.aaa.cachecloud.redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:138)
	at com.aaa.cachecloud.redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:159)
	at com.aaa.cachecloud.redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:138)
	at com.aaa.cachecloud.redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:159)
	at com.aaa.cachecloud.redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:138)
	at com.aaa.cachecloud.redis.clients.jedis.JedisClusterCommand.run(JedisClusterCommand.java:34)
	at com.aaa.cachecloud.redis.clients.jedis.JedisCluster.exists(JedisCluster.java:130)
	at com.aaa.cachecloud.builder.RedisClusterBuilder.exists(RedisClusterBuilder.java:273)
	at com.xy.cloudiview.common.util.RedisTool.delKey(RedisTool.java:41)
	at com.xy.cloudiview.web.controller.LoginController.checkCaptcha(LoginController.java:126)

也没有细看日志报错。以为登录失败和Redis,即cachecloud有关。

另外,作为背景知识,cachecloud有一个appId的概念,不同的应用,使用不同的appId。公司基于开源cachecloud二次开发的Redis组件,使用下来,没有appId隔离的概念,也没有鉴权这一说法。即,如果我的应用使用别的应用的appId,不影响我在别的应用下存储与读取数据;在连接cachecloud server时,不需要用户名/密码。

所以如果配置错误的cachecloud appId,会发生请求转发与重试?故而错误日志里面有:多次runWithRetries方法,最后爆出JedisClusterMaxRedirectionsException异常。

检查cachecloud appId配置。最后还是有问题。

咨询研发同学。给出的答复是:网络等各种原因导致更新slot信息失败,可能慢查询比较多, 阻塞。

没能给出满意的答复,也解决不了我的问题。

另外,在排查的过程中,发现后面并没有记录日志,且上面日志的报错接口是api/login/checkCaptcha,并不是api/login/captcha

因此,和cachecloud appId无关。。

继续排查,
在这里插入图片描述
怀疑和nginx有关。

Jenkins的构建配置:

export JAVA_HOME=/usr/local/java
jar_name=cloud-iview-web.jar
echo '### 创建目录, ###'
Remote_Directory=/www/iview.ppdaiapi.com
Cur_Date=$(date "+%Y%m%d%H%M%S")
mkdir -p ${Remote_Directory}/release/${Cur_Date}
cd ${Remote_Directory}/release/${Cur_Date}
mv ../../${jar_name} ${Remote_Directory}/release/${Cur_Date}
cd ../../
rm -rf  current
ln -s ${Remote_Directory}/release/${Cur_Date} current
cd ${Remote_Directory}/release/${Cur_Date}/
# kill -9 $(ps -ef|grep ${jar_name} | gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')
kill -9 `lsof -nP -iTCP:8060 |grep LISTEN|awk '{print $2;}'`
sleep 5
echo '### 启动jar包 ###'
nohup ${JAVA_HOME}/bin/java -jar ${jar_name} --server.port=8060 --spring.profiles.active=test > output 2>&1 &
#只保留5个版本记录
cd ${Remote_Directory}/release/
filenum=5
filecount=$(ls |grep 20|wc -l)
if [ ${filecount} -gt ${filenum} ];then
    ls | sed -n "1,$[${filecount} - ${filenum}]p" | xargs rm -rf
    echo “删除历史版本成功”
fi

删除Apollo配置之后,并不能生效,因为应用已经启动,是通过命令行的方式启动,

必须再重新构建一次应用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/142150.html

(0)

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!