探索Mendix的性能极限:1000并发用户的优化之路
单表百万行,并发用户1千,Mendix 应用如何优化性能?
「低」代码有「高」性能:揭秘 Mendix 高性能优化方案!
最近,我们为一个客户开发的大型企业级 OA 应用进行了性能测试和优化,该应用是基于 Mendix 平台构建的,准备上线。
本应用面向整个企业,主要提供流程审批功能,每年约有 100 万次审批提交。共有 8000 多名员工使用该 OA 系统,在高峰期(上午 9:00 到 10:00)同时在线的用户数超过 800 个。
在进行性能优化之前,系统在 20 个并发用户的情况下就出现了无法承受的情况。经过优化后,该系统能够轻松应对 800 个并发用户。以下是优化前后一些关键指标的对比。
My Task 页面性能优化前后对比
从上述数据可以看出,优化显著提升了系统的性能。接下来,我们将具体分析优化过程是如何进行的。
该优化过程主要分为三个级别:
第一级,减少用户请求数量。在这一阶段,我们主要优化前后端接口通信逻辑,去除不必要的请求,减少前端对后端服务器的网络请求数。
第二级,减少数据库请求数量。在这一阶段,我们减少应用服务器向数据库服务器的请求次数。主要措施是优化应用服务器发送的 SQL 语句,将原本一次只请求一条记录的 SQL 语句改为一次请求多条数据记录的 SQL 语句。
第三级,减少数据库单次查询时间。在这一阶段,我们不再对应用逻辑进行优化,而是在确保返回结果一致的前提下,优化 SQL 查询语句,以减轻数据库的查询压力。例如,建立适当的索引并优化查询条件。
下文将详细阐述以上优化过程。
在这一阶段,我们主要优化前后端接口通信逻辑,去除不必要的请求,减少前端对后端服务器的网络请求数。
如下图所示,当用户登录成功进入首页之后,会进入My Task
列表。在这个列表中,每一行代表一个待处理的审批单(Form),而每一个审批单又会关联多个历史审批记录(ApproveRecord)。
首页 My Task 页面截图