#laravel #api #performance #nginx #laravel-8
#laravel #API #Производительность #nginx #laravel-8
Вопрос:
Это один ajax-запрос.
Как вы можете видеть, я написал duration
в результате, это продолжительность всех запросов, выполняемых в серверной части api.
Длина ответа 11 KByte
равна, так что это не проблема веса ответа.
Но, как вы можете видеть, сервер обслуживает страницу 5 seconds
.
Я использую nginx, и на этом сервере (это один проект dev VPS) нет трафика, нет проблем с параллелизмом.
Серверная часть создана в laravel 8 и выполняет только это:
$start = microtime(true);
$data = $this->articleRepository->getProducts($request->all());
$duration = microtime(true) - $start;
return response()->json([
'status' => 'success',
'data' => $data,
'debug' => [
'duration' => $duration
]
]);
Я попытался заменить laravel magics на
$json = json_encode([
'status' => 'success',
'data' => $data,
'debug' => [
'duration' => $duration
]
]);
return $json;
Но это занимает столько же времени. Поэтому я думаю, что это проблема на стороне сервера.
Кстати, обратите внимание, что dev VPS — это компьютер debian 11 в моей локальной сети. Мы уже проверили, что диапазон вверх / вниз значительно превышает 350 Мбит / с, симметричный и стабильный.
Я не могу это диагностировать, у меня есть root-доступ к VPS, но я понятия не имею, что может вызвать такую медлительность
Есть идеи?
Комментарии:
1. Laravel может быть ленивым при загрузке ваших
$data
моделей. Это означает, что они могут не запрашивать некоторые данные (например, другие модели, заданные как отношения), пока они не будут явно запрошены в коде, например, во время вашего ответа-> вызова json. Ознакомьтесь с Красноречивой нетерпеливой загрузкой в документах — laravel.com/docs/master/eloquent-relationships#eager-loading2. Нет, я попытался повторить «Привет», но TTFB все еще> 4 секунд
Ответ №1:
В данном конкретном случае речь шла о DNS. разрешение «localhost» вызывает ряд проблем и задержек. Мы переместили все указания с ‘localhost’ на 127.0.0.1, и ВСЕ решено.
Примечание для будущих пользователей Google для разработчиков Laragon и / или Xamp: мы случайно обнаружили, что изменение localhost на 127.0.0.1 при настройке redis в переменной laravel .env устраняет огромные проблемы на компьютере с Windows при использовании как Laragon, так и Xamp