MeterSphere 在使用过程中如果遇到页面卡顿的情况,可以考虑进行模块内存调整或者通过开启慢查询,定位到具体的慢 SQL,进一步定位原因,具体操作方法如下所述:
1. 通过调整模块内存解决页面卡顿问题
当页面太卡时,可以在服务器上执行【docker stats】看看各个服务模块内存使用率情况
当看到内存使用率达到 70% 以上即可适当调整。可以【vi /opt/metersphere/.env】文件最下方增加如下内存
MS_DS_MEM_LIMIT=2g
MS_EUREKA_MEM_LIMIT=2g
MS_GATEWAY_MEM_LIMIT=2g
MS_MINIO_MEM_LIMIT=2g
MS_PERFORMANCE_MEM_LIMIT=4g
MS_PROJECT_MEM_LIMIT=4g
MS_REPORT_MEM_LIMIT=4g
MS_TRACK_MEM_LIMIT=4g
MS_UI_MEM_LIMIT=4g
MS_WORKSTATION_MEM_LIMIT=4g
MS_API_MEM_LIMIT=4g
MS_NC_MEM_LIMIT=4g
MS_SYSTEM_MEM_LIMIT=4g
增加后的效果图如下图所示:
添加完成后执行【msctl reload】重新加载服务
执行【docker stats】看看内存是否修改成功,内存使用率已经降下来
或者可以【vi /opt/metersphere/docker-compose-test-track.yml】修改文件里的 mem_limit 的值,默认是 1g ,可以将其改为【4294967296】即 4g,之后【msctl reload】 即可
2.通过开启慢查询确认慢SQL定位卡顿原因
开启 mysql 慢查询,将 sql 输出到文件里进行排查,看看是不是存在 sql 语句查询缓慢问题,可以先按照以下脚本确认慢查询是否开启以及时间设置如何:
# 进入 mysql 容器
docker exec -it mysql sh
# 登录 mysql 数据库
mysql -uroot -pPassword123@mysql
# 查询慢查询是否开启
show variables like 'slow_query_log';
# 未使用索引是否开启日志
show variables like 'log_queries_not_using_indexes';
# 慢查询时间设置
show variables like 'long_query_time';
按照以下脚本设置开启慢查询:
# 慢查询开启
set global slow_query_log="ON";
set global log_queries_not_using_indexes="ON";
# 设置时间
set global long_query_time=2
# 慢查询文件位置
show variables like "slow_query_log_file";
慢查询开启后,在 MS 系统页面点击功能加载慢的菜单,之后可以在【/opt/metersphere/data/mysql 】目录下,可以看到慢查询文件。