У нас есть приложение Laravel (версия 5.4.18), которое подключено к базе данных MySQL (5.6.38) (всего 300 тыс. Строк), тип MyISAM.И у нас есть API-ответ, подобный Model::with('anothermodel')->paginate(25)
, и в какой-то момент время выполнения этого запроса достигло 18 секунд, что является очень большим значением.Я создал песочницу с копией среды live laravel, которая использует копию той же самой базы данных (на том же сервере), и теперь этот API-ответ выполняется за 2,5 секунды.Если мы пытаемся подключить песочницу Laravel к работающей БД, то выполнение API снова 18 с.Пожалуйста, проверьте изображение.
Итак, если мы предположим, что проблема в таблице БД живого веб-сайта, но если мы попытаемся измерить этот запросс microtime
, тогда это покажет, что время, необходимое для генерации этого запроса и получения данных из базы данных, составляет всего 0,7 сек.
Так что, если мы предположим, что проблема в маршрутах API или в коде Laravel, ноточно такой же код выполняется без проблем, если я просто скопирую его в подкаталог (как песочницу).
Есть идеи?
Также немного информации о сервере: PHP 7.0.29 на сервере Linux сОперативная память 32 ГБ.