我有一个在docker容器中运行的python flask应用程序。我正在使用Test-DbaNetworkLatency
测试我的应用程序和SQL Server(在内部运行)之间的网络延迟。我发现从docker容器运行时网络延迟非常慢,但是在Mac主机上运行时网络延迟非常快。 docker容器基于ubuntu
,我在其上安装了powershell
。 Test-DbaNetworkLatency
正在从powershell运行。我还在本地Mac OS上安装了powershell
。
我本地的结果是:
ExecutionCount : 1
Total : 220.91 ms
Average : 220.91 ms
ExecuteOnlyTotal : 154.21 ms
ExecuteOnlyAverage : 154.21 ms
NetworkOnlyTotal : 66.69 ms
但是docker容器的结果是:
ExecutionCount : 1
Total : 1.23 s
Average : 1.23 s
ExecuteOnlyTotal : 282.52 ms
ExecuteOnlyAverage : 282.52 ms
NetworkOnlyTotal : 946.88 ms
您可以看到从docker运行时存在较大的网络延迟。 Docker有什么问题吗?
如果我从容器和本地ping实例,则没有太大区别。但是当从容器和本地发送sql查询时,我确实看到性能不同。这就是为什么我需要Test-DbaNetworkLatency
来测试网络延迟的原因。
经过一些测试,我发现如果将命令Test-DbaNetworkLatency
放在pwsh -Command "Test-DbaNetworkLatency ... "
中,将会非常慢。但是,如果我运行pwsh
切换到powershell命令,则它的运行速度将与本地命令一样快。但是,如何定义一个dockerfile来让容器初始化powershell
,让我将powershell
脚本指定为ENTRYPOINT?