问题:
部署环境下tomcat容器启动缓慢,耗时10多分钟,性能较差,同时后端服务响应较慢。
排查:
宿主环境:
docker使用情况:
对比结果CPU、内存使用率都不高。
针对docker环境进行检查:
vmstat 1 10
使用vmstat统计每间隔1秒共10条信息的结果:
结果中看了一看出cpu、内存使用情况都不高,但是system:中in、CS 较高。
现在知道是谁让整体性能形成木桶效应,去排查为什么会慢:
从存储驱动原理原理中可以看到这个信息:
- 文件在容器层中存在:当文件存在于容器层并且不存在于镜像层时,直接从容器层读取文件;
- 当文件在容器层中不存在:当容器中的进程需要读取某个文件时,如果容器层中不存在该文件,则从镜像层查找该文件,然后读取文件内容;
- 文件既存在于镜像层,又存在于容器层:当我们读取的文件既存在于镜像层,又存在于容器层时,将会从容器层读取该文件。
当tomcat解压war包后会形成很多个文件(.class、.jar等)。我这边使用的是文件挂载
volumes:
- D:\mydata\tomcat\webapps:/usr/local/tomcat/webapps # 指定对应的数据卷
考虑war解压不会占用过多的磁盘空间,直接不使用挂载,将jar包部署到容器内。
性能是直线飙升,原先部署时间要10多分钟,现在2分钟内搞定。