2020年7月16日 FineReport学习日总结
1.技术文档编辑学习
完善文档:JS实现分页预览改变鼠标悬停所在的行列的背景色添加链接描述
- 在管理员的指导下调整文档架构为FineReport 标准格式
- 对于文档中模糊的图片进行修正
- 提交作日完善内容报告
2.ECMAScript学习
学习了ECMAScriptt 的一些版本更新内容,了解了ES的起源,ES5与ES6的区别。
3.FineReport 内置模板浏览
查阅了解FineReport 内置模板,对不同的展现形式做了解,其中了解到的新的内容为:报告书模板
4.社区用户问题研究
为了提升个人对实际业务的了解,尝试性的去了解并解决社区内各用户遇到的生产性问题。
今日参与回复问题共计8个,被采纳回复2个。
分享一下解决问题的过程,记录下第一次生产业务操作
用户反馈问题:
已经把平台上的限制都关了,查询数据还是提示服务器压力过大,触发保护机制,请刷新该页面。若您是管理员。
SQL分析器里查询,只有2万多条数据,这是怎么回事
初步判断:
1.用户存在过滤查询,过滤查询会造成大量的连接,连接数过多的时候会导致内存过大。
2.直接预览是否可见,如果可见的话,那么用户应该使用了数据字典,数据字典也会产生大量的连接数,导致内存占满
进一步的沟通:
由于用户这边的问题较为复杂,这边用户自己由于对于软件不是特别熟悉,为了更方便的解决问题,希望邀请我远程排查。
在用户发出邀请的时候,我做了以下步骤。
1.因为当时已经是快中午了,所以先和用户约了时间;
2.告诉用户,我希望他能部署一套测试环境供我排查;
3.让用户确认问题都是在哪些操作出现的。
排查步骤
中午吃完饭,客户和我联系了,我让用户打开了有异常的模板,并让他确认是否对数据进行了备份,做好这些后我使用QQ连接到了用户的电脑。
1.我查看了用户的数据集,发现用户果然用了很多的数据集连接,此刻我将主要的排查方向定在了数据列和报表参数上。
2.点击用户的预览报表,确认用户的问题是否同其描述一致、、、这里就有点意思了,用户界面报的和他提供的错误不一样了,是一个Sql Server 日志满了无法查询的错误。
3.再次启动报表预览,确认问题,结果还是日志问题,于是将该异常丢到百度上去,让用户自行查阅解决。
4.为了避免其他数据安全纠纷,我告诉用户,操作数据库的话存在敏感性,我这边先退出了,您这边自行处理下,操作文档已经给您打开在浏览器了,说完我退出了远程。
5.用户再次找到我后,我继续进行了排查,首先确认是否是数据量过大导致的,这里我让用户在数据集查询中增加了TOP 分页,增加后一切正常,那么确认了问题的方向。
6.接下来我让用户取消了分页,按照小范围条件筛选进行尝试,发现同样没问题。
7.我让用户按照能出现异常的方式进行操作,操作完成后查阅运行日志,发现提示:超出最大单元格 最大单元格数90000
8.随后让用户到决策平台更改,用户关闭了行和格子的限制。
9.再次尝试的时候,出现了用户早上提到的内存保护的错误。
10.为了再次确认问题,并获取用户的服务器配置,我让用户调取了决策平台内存预警截图,通过截图看到用户主机内存仅有4GB ,而他在进行查询的时候内存占用量由50% 上升到了80%。
11.接下来我让用户拷贝了运行日志中的执行sql 语句到sql Server 中进行查询,发现用户的数据量为23000行,每行42列,每个单元格大约有15个汉字编码。
也就是说
按照通用UTF-8标准 3~4字节代表一个汉字
字母与汉字平均按照3个字节算
用户单次查询的数据量为
31542*23000 字 共计 43,470,000字 即 43MB
12.看到用户数据量之后,综合考虑前端缓存,普通字符转换为html富文本带来的增量(每个单元格使用富文本会增加200字左右,),那么服务器压力过大的原因找到了。
13.找到原因后,那么问题很好解决了,从基础设备方面,我们是可以增大内存的,但是成本偏高,后期生产数据增加后仍然会出现。
14.那么有没有更好的办法呢,有的,这里我推荐了用户采用数据库分页查询,同时我推荐了FineReport 社区 对于sql Server2012 以上版本数据库采用分页方案。
本文地址:https://blog.csdn.net/qq_35564086/article/details/107388540
上一篇: Spring boot WebSocket实现简单的多人聊天
下一篇: 和女朋友逛街买衣服