Сетевая задержка на контейнере Docker при подключении к SQL Server - PullRequest
0 голосов
/ 08 октября 2019

У меня есть приложение фляги Python, работающее внутри док-контейнера. И я использую Test-DbaNetworkLatency для проверки задержки в сети между моим приложением и SQL Server (работающим в помещении). Я обнаружил, что задержка в сети очень медленная, когда она запускается из док-контейнера, но очень быстрая, когда я работаю на хосте 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

Вы видите, что при запуске из докера возникает большая задержка в сети. Что-то не так связано с докером?

Если я пропингую экземпляр от контейнера и локально, то не сильно отличается. Но я вижу производительность отличается, когда SQL-запрос отправляется из контейнера и локально. Вот почему мне нужно Test-DbaNetworkLatency для проверки задержки в сети.

После некоторого тестирования я обнаружил, что если я введу команду Test-DbaNetworkLatency внутри pwsh -Command "Test-DbaNetworkLatency ... ", она будет очень медленной. Но если я запускаю pwsh, чтобы переключиться на команду powershell, то он будет работать так же быстро, как и мой локальный. Но как я могу определить dockerfile, чтобы позволить контейнеру инициализировать powershell, позвольте мне указать powershell скрипт как ENTRYPOINT?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...