我有一个在 docker 容器内运行的 python 烧瓶应用程序。我正在使用Test-DbaNetworkLatency
测试我的应用程序和 SQL Server(在本地运行)之间的网络延迟。我发现当它从 docker 容器运行时网络延迟非常慢,但当我在 Mac 主机上运行时它非常快。docker容器是基于ubuntu
我安装powershell
的。Test-DbaNetworkLatency
正在从 powershell 运行。我还安装powershell
在我的本地 Mac OS 上。
我本地的结果是:
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?