Я начинаю использовать http://reactphp.org/ для обработки HTTP-запроса.
Я запускаю несколько реагирующих рабочих, которые работают на разных портах, а затем использую Nginx в качестве балансировки нагрузки для обработки запросов.
Как это
upstream backend {
server 127.0.0.1:13300;
server 127.0.0.1:13301;
.....
}
Все работает хорошо, как и ожидалось.
Вопрос в том, как получить статистику о состоянии процессаactphp. Сколько процессов в данный момент находится в состоянии ожидания (ожидание нового запроса), сколько процессов работает по запросу и т. Д.
Существуют ли обходные пути?
Или идея, как обрабатывать статистику процесса вручную.
Пример — блокировка записи в некоторый кеш-процесс Когда завершить запрос — увеличить количество обрабатываемых процессов, когда завершить запрос — увеличить число неактивных процессов.
В прошлый раз, когда у меня был набор рабочих потоков, я настроил несколько таблиц в базе данных MySQL.
рабочие были там, где каждый поток регистрировал строку (давая ей идентификатор). Поток будет блокировать свою строку и поддерживать столбец состояния.
Был также стек инструкций. Если бы работник увидел его идентификатор и текст «выход», он бы закрылся и вышел. Последнее, что нужно сделать, это удалить строку. Установка статуса на выход также сработала бы.
Я также сделал отчет о состоянии и страницу администратора, где я мог давать команды и устанавливать задачи для своих рабочих потоков.
Это позволит вам увидеть, что делает каждый поток, и получить количество свободных потоков.
Холостые темы:
SELECT count(id) AS threads WHERE status='idle';
Подсчет статуса потока:
SELECT status, count(id) AS threads GROUP BY status;
Других решений пока нет …