centos6.7新docker环境启动时间增多问题

目前启动时间

硬件检测(95s)+操作系统和服务(120s)=3分35秒

环境

系统:CentOS release 6.7 (Final)

内核:4.10.7-1.el6.elrepo.x86_64

Docker:17.03.1-ce

Kvm:qemu-kvm-0.12.1.2-2.503.el6

主要原因分析

进行快速地,高并发地,并行地启动平台环境各个模块。这给os带来IO密集型(read)操作。

产品代码在tomcat中,首次启动时会加载相应代码至内存中。若通过docker容器隔离并行启动多个tomcat时,系统IO操作密集(read),造成IO阻塞,CPU空闲。

注:当重启tomcat时,因内存中驻有第一次加载过的class类。启动速度会大大加快。

       平台代码庞大,启动时加载项巨多,系统负载很高

  Docker容器和KVM虚拟机启动都有一定的IO,但相对tomcat加载代码时少很多。

优化思路

系统挂载两块磁盘进行IO分离,一个放代码用做tomcat首次加载。一个存放Docker容器和KVM虚拟windows文件。

采用tomcat进行onlyone模式部署,一个Docker容器中一个tomcat跑多个业务。(一定程度上简化了环境的部署)

Tomcat采用Nio(非IO阻塞)模式启动,大大加快首次加载速度。

Tomcat开启并行启动

优化启动顺序,对IO密集型和CPU密集型进行人为错开优先启动webapp。

如下图优化前后对比:


centos6.7新docker环境启动时间增多问题_第1张图片
磁盘内容分布前后对比

你可能感兴趣的:(centos6.7新docker环境启动时间增多问题)