Я создал API, используя Laravel с установленным сервером Centos.
В API есть процесс, который использует безголовый chrome, подобный этому, для получения HTML источника.
[MyController.php]
$url = $request['url'];
$browser = $browserFactory->createBrowser(
[
'headless' => true,
'noSandbox' => true,
]
);
try{
$this->page = $browser->createPage();
$this->page->navigate($url)->waitForNavigation(Page::LOAD, 60);
$response = $this->page->evaluate('document.documentElement.outerHTML')->getReturnValue();
$resolvedURL = $this->page->getCurrentUrl();
// too long to load
} catch (OperationTimedOut $e) {
$response = null;
$resolvedURL = null;
// An other page was loaded
} catch (NavigationExpired $e) {
$response = null;
$resolvedURL = null;
} finally {
$browser->close();
}
// analyze retrived html code
.
.
.
Теперь у моего сервера высокая проблема средней нагрузки из-за высокой загрузки ЦП, и я попытался выяснить причины.
У меня много HTTP-запросов к этому API, очевидно, как Вы можете видеть, что на скриншоте запущено много процессов PHP -pm.
Я бы хотел снизить среднюю нагрузку на сервер, не регулируя число дочерних элементов PHP -fpm max, но я ' Я не очень хорош в управлении сервером.
Что я могу сделать, чтобы снизить нагрузку на процессор? Я сделал все возможное, чтобы оптимизировать мой PHP код уже.
Например, можно ли совместно использовать один Chrome процесс во всех PHP -fpm процессах, чтобы мне не нужно было создавать chrome процесс для каждого HTTP-запроса?