Значительно ли ниже производительность приложения, работающего в контейнере Docker, по сравнению с его запуском вне контPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Значительно ли ниже производительность приложения, работающего в контейнере Docker, по сравнению с его запуском вне конт

Сообщение Anonymous »

Правда ли, что производительность приложения, работающего в контейнере Docker, значительно ниже, чем при запуске его вне контейнера?
Я протестировал недавно установленное приложение Laravel, используя следующее метод:

Код: Выделить всё

ab -t 10 -c 10 -v 2 "http://url.ur"
Вот результаты RPS (запросов в секунду):
Без Docker:

Код: Выделить всё

ab -t 10 -c 10 -v 2 "http://test.site/ab"
2723.24 [#/sec] (mean)
2744.14 [#/sec] (mean)
2739.20 [#/sec] (mean)
С контейнером Docker:

Код: Выделить всё

ab -t 10 -c 10 -v 2 "http://localhost:8000/ab"
83.67 [#/sec] (mean)
88.92 [#/sec] (mean)
87.36 [#/sec] (mean)
Почему такая значительная разница в производительности? Известна ли это проблема при использовании Docker или это может быть связано с конкретной проблемой конфигурации?
Характеристики операционной системы и оборудования:

Код: Выделить всё

OS: Ubuntu 24.04
CPU: Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz
RAM: 32 GB
Disk: 457 GB total, 42 GB used, 392 GB available
Это мой docker-compose.yml:

Код: Выделить всё

version: '3.8'

services:
app:
image: php:8.3-fpm
container_name: laravel_app
restart: unless-stopped
working_dir: /var/www
volumes:
- ./:/var/www
- ./docker/php/php.ini:/usr/local/etc/php/php.ini
networks:
- laravel_network

webserver:
image: nginx:latest
container_name: laravel_nginx
restart: unless-stopped
ports:
- "8000:80"
volumes:
- ./:/var/www
- ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
depends_on:
- app
networks:
- laravel_network

networks:
laravel_network:
driver: bridge
Я протестировал приложение Laravel с помощью ab, чтобы сравнить количество запросов в секунду на хосте и в Docker. Я ожидал аналогичной производительности, но число запросов в секунду у Docker оказалось значительно ниже (около 85 против 2700).
Обновлено:
Вот результаты на другом сервер:
Без Docker (ab -t 10 -c 10 -v 2 "http://185.65.202.78/ab"):

Код: Выделить всё

Requests per second: 43.58 [#/sec] (mean)
Requests per second: 39.66 [#/sec] (mean)
Requests per second: 39.80 [#/sec] (mean)
Requests per second: 38.40 [#/sec] (mean)
С Docker (ab -t 10 -c 10 -v 2 "http://185.65.202.78:8000/ab"):

Код: Выделить всё

Requests per second: 7.30 [#/sec] (mean)
Requests per second: 6.70 [#/sec] (mean)
Requests per second: 6.25 [#/sec] (mean)
Requests per second: 7.28 [#/sec] (mean)
Маршрут /ab содержит:

Код: Выделить всё

Route::middleware([])->get('/ab', function () {
$points = [];
$start = microtime(true);
$points['app_boot'] = microtime(true) - $start;
$points['response_created'] = microtime(true) - $start;
return response()->json($points);
})->withoutMiddleware(\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken::class)
->withoutMiddleware(\Illuminate\Session\Middleware\StartSession::class)
->withoutMiddleware(\Illuminate\View\Middleware\ShareErrorsFromSession::class);
Без Docker (curl «http://185.65.202.78/ab»):

Код: Выделить всё

{"app_boot":0,"response_created":0.0011429786682128906}
{"app_boot":0,"response_created":0.0006058216094970703}
{"app_boot":0,"response_created":0.0013248920440673828}
С помощью Docker (curl "http://185.65.202.78:8000/ab"):

Код: Выделить всё

{"app_boot":0,"response_created":0.014487028121948242}
{"app_boot":0,"response_created":0.01622796058654785}
{"app_boot":0,"response_created":0.014702081680297852}
Вы можете посетить URL-адрес и проверить его самостоятельно. Я не понимаю, почему такая большая разница.

Подробнее здесь: https://stackoverflow.com/questions/791 ... tly-slower
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»