最近发现一个问题,之前开发好的一个项目部署到公司内网供部门内同事使用后,大家都反应每次登录系统后首页加载很长时间才刷出信息,且基本都是第一次(重新刷新浏览器则不会卡);若是把浏览器的记录删除掉,重启电脑,再访问系统同样是出现首页加载耗时时间长的问题。
为了这个问题,我复现了下现象,我的电脑比较好,如果是用自己本地的代码开发调试,复现不了现象,基本没延迟(这也是无解)。但根据同事的截图和我自己的调试,基本“锁定”了耗时的“问题”:
同事给的截图:
可以看到图上对应接口耗时11.2s.
于是乎我用本地代码调试,也得到了相应的信息(虽然在我电脑耗时700多ms,但也还是慢了):
我对照接口,直接测试了后台存储过程的sql执行时间:8ms;又单独测试了接口的请求与返回时间:94ms。于是我认为应该是前端调用哪里顺序不对、或是DOM渲染需要优化,我改了很多遍,测试还是会出现龟速图表,实在发现不了问题再哪里。
后来同事使用edge浏览器测试,按照我的浏览器调试方式,发现了浏览器上显示的返回错误信息:
{
"Success": false,
"ResultData": null,
"ReturnMsg": "请求发生错误Authentication to host '172.18.54.241' for user 'root' using method 'caching_sha2_password' failed with message: Got timeout reading communication packets"
}
网上一查是数据库的问题:因为MySQL8.0以前的加密规则是mysql_native_password,8.0之后的版本是caching_sha2_password所以导致的。需要修改我的C#数据分析后台程序连接mysql数据库的数据库配置文件,在其中添加一段SslMode=None;即可解决。
具体参考信息:
<add name="BaseDb" connectionString="Data Source=#.#.#.#;Port=3307;UserId=root;Password=#####;Database=pms;SslMode=None;charset=utf8" providerName="MySql.Data.MySqlClient"/>
参考链接:https://blog.csdn.net/weixin_42209881/article/details/138562321