一、该问题的重现步骤是什么?
1. 连接外网的mysql数据
2. idea启动服务
3.打开前端页面,过10分钟左右,然后输入账号密码登录(去掉验证码了)
4.然后页面就会卡顿一会,然后才能进去系统
5.看控制台日志有一个奇怪的日志(下面日志里奇怪的部门我加粗了)
6.在操作其他的就正常了
7.不管什么api,如果等的时间长了页面不操作,等一会再操作就会页面卡顿一会才能出来,出来之后,再操作就又快了
以上问题,别的工程连接同样的数据库,就没出现这个卡顿问题,看了数据库连接配置,都是沿用的框架自带的
二、你期待的结果是什么?实际看到的又是什么?
期待结果:api正常调用,不存在登录卡顿现象
实际结果:系统长时间不操作,就会出现第一期请求api卡顿的情况
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
企业联合版3.0.1,Windows10系统
四、请提供详细的错误堆栈信息,这很重要。
没用经理商业账号发问题,就自己先发出来了,经理老忙,没把账号共享给我们
-----------------------------------点击登录按钮开始---------------------------------------
2022-11-12 14:46:44.478 INFO 3952 --- [ XNIO-1 task-1] io.undertow.servlet : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-11-12 14:46:44.478 INFO 3952 --- [ XNIO-1 task-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2022-11-12 14:46:44.482 INFO 3952 --- [ XNIO-1 task-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@dffe3f9d] was not registered for synchronization because synchronization is not active
original SQL: SELECT id,tenant_name,domain_url,background_url,linkman,contact_number,address,account_number,expire_time,package_id,datasource_id,license_key,tenant_id,create_user,create_dept,create_time,update_user,update_time,status,is_deleted FROM blade_tenant
WHERE is_deleted=0
AND (tenant_id = ?)
SQL to parse, SQL: SELECT id,tenant_name,domain_url,background_url,linkman,contact_number,address,account_number,expire_time,package_id,datasource_id,license_key,tenant_id,create_user,create_dept,create_time,update_user,update_time,status,is_deleted FROM blade_tenant
WHERE is_deleted=0
AND (tenant_id = ?)
parse the finished SQL: SELECT id, tenant_name, domain_url, background_url, linkman, contact_number, address, account_number, expire_time, package_id, datasource_id, license_key, tenant_id, create_user, create_dept, create_time, update_user, update_time, status, is_deleted FROM blade_tenant WHERE is_deleted = 0 AND (tenant_id = ?)
-----------------------------------页面一直转圈等待。。。-----------------------------------------------------------------
----------------------------------登录成功,进入系统--------------------------------------------------------------
JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@8289b088] will not be managed by Spring
==> Preparing: SELECT id, tenant_name, domain_url, background_url, linkman, contact_number, address, account_number, expire_time, package_id, datasource_id, license_key, tenant_id, create_user, create_dept, create_time, update_user, update_time, status, is_deleted FROM blade_tenant WHERE is_deleted = 0 AND (tenant_id = ?)
==> Parameters: 000000(String)
<== Columns: id, tenant_name, domain_url, background_url, linkman, contact_number, address, account_number, expire_time, package_id, datasource_id, license_key, tenant_id, create_user, create_dept, create_time, update_user, update_time, status, is_deleted
<== Row: 1123598820738675201, 管理组, null, null, admin, 666666, 管理组, -1, null, null, null, null, 000000, 1123598821738675201, 1123598813738675201, 2019-01-01 00:00:39, 1123598821738675201, 2019-01-01 00:00:39, 1, 0
<== Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@dffe3f9d]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@670142f0] was not registered for synchronization because synchronization is not active
original SQL: SELECT
*
FROM
blade_user
WHERE
tenant_id = ? and account = ? and password = ? and is_deleted = 0
SQL to parse, SQL: SELECT
*
FROM
blade_user
WHERE
tenant_id = ? and account = ? and password = ? and is_deleted = 0
parse the finished SQL: SELECT * FROM blade_user WHERE tenant_id = ? AND account = ? AND password = ? AND is_deleted = 0
JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@8289b088] will not be managed by Spring
==> Preparing: SELECT * FROM blade_user WHERE tenant_id = ? AND account = ? AND password = ? AND is_deleted = 0
==> Parameters: 000000(String), admin(String), 90b9aa7e25f80cf4f64e990b78a9fc5ebd6cecad(String)
五、若有更多详细信息,请在下面提供。
问题解决, 特来分享给大家: 是连接池配置的问题, 外网访问时,需要追两个参数:
druid:
keep-alive: true
keep-alive-between-time-millis: 30000
time-between-eviction-runs-millis: 15000
追上去就可以了
bladex本身是没有这样的日志打印的,你们是否有过其他的改动,另外你加粗的日志和调用时间久关系不大,具体可以看这个:https://blog.csdn.net/csdn_avatar_2019/article/details/126128875
其他工程可以的话,可以看一下对应的jdbc、druid版本是多少,改成一样试试。另外先不要从前端操作,直接用postman调用后端接口,看看是否会有同样的卡顿情况出现。
如果postman调用没问题,则可以把问题定位到前端,再下一步排查。
我也遇到过这个问题. 感觉是mysql超时断开之类的问题.
问题解决, 特来分享给大家: 是连接池配置的问题, 外网访问时,需要追两个参数:
druid:
keep-alive: true
keep-alive-between-time-millis: 30000
time-between-eviction-runs-millis: 15000
追上去就可以了
扫一扫访问 Blade技术社区 移动端