Как заставить работать 2 параллельных запроса одновременно в nginx?
Проблема в следующем. Есть большой интернет магазин, который было решено перенести с хостинга на сервер.
Сервер настроил: centos7+nginx+mariadb+php-fpm.
Всё ок, кроме 1 — если допустим открыть 2 страницы одновременно, которые загружаются долго, то пока первая не загрузится, вторая (или любые последующие (или даже с другого устройства запрошенные одновременно с первым запросом) ) не загрузятся.
Есть подозрения, что именно сидит в синхронном режиме?
- проверить nginx на статике
- проверить php-fpm
- проверить СУБД
Затем, в зависимости от источника затупа, ковыряться с соответствующими настройками
Urvin,
Проверил. Статика асинхронно грузится, базу даже проверять не буду, это один из столпов её существования)
Как и ответили позже вас - fpm, только вот какие параметры настраивать пока не понятно.
Конфиг могу скинуть.
Алексей Тен, Есть только 1 вопрос, который мне до сих пор не понятен. Зачем php-fpm оставляет за собой кучу процессов в фоне и не убивает их? Кешировать там нечего. И как убивать наплодённые процессы после отдачи пользователю данных.
Насколько я помню, php-fpm держит пул процессов, что бы сразу начать обрабатывать ваш запрос, а не терять время на запуск процесса.
Зачем вы хотите их убивать? Вам каких-то ресурсов не хватает?
Для их настройки как раз все эти параметры pm и существуют.
Алексей Тен,
Да, клиент жмот.
Пытаюсь 700к товаров opencart впихнуть в хар-ки 2 ядра, 2гб озу)
При стандартных настройках через 5-7 запросов озу кончалось и fpm просто переставал что-либо делать при обновлении новых страниц. Вот поэтому и хотелось бы чтоб он убивал всё и сразу.
Поставил ондеманд, 4 процесса, вроде более-менее) Но иногда залипает, но быстро отпускает.
Пытаюсь 700к товаров opencart впихнуть в хар-ки 2 ядра, 2гб озу)
Для 700к товаров железо норм, сам опенкарт очен плохо спроектирован. Под нагрузкой посмотрите в базе show processlist; вопросы почему так медленно отпадут.
Вангую: это не Nginx, а в PHP открываете сессию и долго работаете, не закрывая ее. Поэтому второй запрос ждет, пока текущая сессия освободится (фактически, пока первый запрос закончится). Надо сессию закрывать сразу же.