docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker对网络和程序速度的影响

docker对网络和程序速度的影响解读

作者:后会无期77

本文通过对比分析,测试了在宿主机和Docker容器中部署Spring Boot程序的性能差异,在网络延迟方面,Docker容器比宿主机慢0.1~0.2毫秒,在程序运行速度方面,宿主机和Docker容器的平均运行时间相近,单次运行时间存在较大差异,无法确定Docker容器在速度上优于宿主机

前言

程序即可以部署在容器内,也可以部署在docker容器中,那么两者有什么区别?

部署在容器中相对于直接部署在宿主机上,网络速度是否会变慢?程序运行是否会慢?

环境说明

测试使用的服务器是百度智能云轻量级服务器,2核4G,6M宽带。

网络延迟测试

两个标签窗口,上图直接使用宿主机进行ping 命令,下图docker的容器内进行ping命令,同时ping同一个ip地址。

根据多次ping命令的观察,可以发现在docker容器内进行ping命令速度比宿主机内慢0.1~0.2 ms。

结论:docker 对网络的影响很小,大约比主机慢0.1~0.2毫秒。

程序速度测试

程序运行速度的是,我们使用springboot 的web方式测试,代码是生成一个倒序的数组,例如5,4,3,2,1,通过冒泡排序算法对数组排序(从小到大),得出排序所消耗的时间。

注意:

这里不使用随机算法产生数组作为待排序样本,是为了保证每次排序的样本数组是完全一样,保证每次测试公平。

代码如下:

    @GetMapping("/test/{num}")
    public String test(@PathVariable("num") int num){
        long s=System.currentTimeMillis();
        int[] arr=new int[num];
       for(int i=num;i>0;i--){
           arr[num-i]=i;
       }
        //System.out.println(Arrays.toString(arr));
        BubbleSortMethod(arr);//冒泡排序
       // System.out.println(Arrays.toString(arr));
        long e=System.currentTimeMillis();
        return "排序:"+num+",耗时:"+(e-s)+" ms";
    }

    public static int[] BubbleSortMethod(int[] arr){
        int temp = 0;
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = 0; j < arr.length-1 -i; j++) {
                if (arr[j] > arr[j+1]){
                    temp  = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        return arr;
    }

将程序打包为jar包,分别直接部署在宿主机和docker容器内。

为了避免不确定因素,我们需要多次测试,求平均值。

测试num=100000,将10万个数字进行排序。

注:

为了避免服务器不同时刻,可能cpu负载不一样,测试采用的交替方式,即一次宿主机,一次docker,降低可能存在的不同时刻主机负载的问题。

编号宿主机模式(ms)docker模式(ms)
145904869
245854647
347924750
451164615
550875087
650635372
749785120
855165098
951255076
1053465331
平均耗时50125002

平均值计算:去掉一个最大,去掉一个最小,求平均数。

总结:

关于网上的结论

在做这个测试之前,网上的结论是物理机比docker快很多,或者快百分之多少,但是似乎都是以听说的方式得到的结论。这里试验的目的为了以实际数据来得出结论,而不是靠猜测或者听别人说。也非常希望有人以

实际的试验结论进行辩驳,欢迎用事实依据的方法纠正。

上述试验仅供参考。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文