Процесс Laravel / PHP в Debian 10 использует только один из двух потоков ЦП

Я запускаю сервер Debian 10 Buster на виртуальной машине Google с PHP 7.3, Apache2 и MySQL 8. На сервере я запускаю Laravel 8 как API для двух клиентов. Недавно я обновил виртуальную машину до n2-standard-2 (2 виртуальных ЦП, 8 ГБ памяти) и хотел проверить пропускную способность, которую может обработать мой сервер.

Моя проблема в том, что мой сервер никогда не использует 100% ЦП на самом деле он всегда использует максимум 50%. Вначале я думал, что это потому, что он использовал только одно ядро, но если я запустил верхний уровень на сервере во время стресс-тестирования маршрута на сервере, я увидел, что оба ядра используются, но только до 50%, как показано на фото. В чем проблема? Есть ли способ полностью использовать оба ядра? Кажется, у меня достаточно доступной памяти, а дисковый ввод-вывод никогда пики очень высоки.

Laravel работает на обратном прокси-сервере на порту 9595, а PID 19541 - это PPID команды PHP artisan serve. У меня нет очереди в моем приложении Laravel, но откуда Я могу Скажите, что это действительно очень полезно только для более длительных и более интенсивных задач, которые не должны быть? (в тесте выполняется ряд довольно простых запросов POST, считываемых из MySQL).

top 1 output while running stress test on server

РЕДАКТИРОВАТЬ: В ходе дальнейшего расследования я обнаружил следующее: У меня 1 ядро ​​ЦП с 2 потоками. Я могу протестировать оба потока на 100%. Это потому, что мой файл php7.3 использует только один поток, который я никогда не смогу достичь 100% с входящими запросами https. Если я изменю MaxRequestWorkers в Apache, это не имеет значения. Я предполагаю, что php использует только один поток. Я не понимаю, почему Apache не использует автоматически оба ядра, поскольку Apache должен это делать?

1
задан 19 March 2021 в 00:08
1 ответ

После длительного тестирования я нашел узкое место: Я обслуживал Laravel на PHP artisan через обратный прокси, и именно artisan отклонял запросы при достижении определенного уровня. Я устранил это, просто обслуживая Laravel с помощью Apache. Узкое место исчезло, и теперь я могу использовать 100% мощности процессора, если захочу.

0
ответ дан 24 April 2021 в 01:02

Теги

Похожие вопросы