Цикл событий по сравнению с Мультипотоком, блокирующим IO

просто запустите в терминале Linux, чтобы получить phpinfo.

   php -r 'phpinfo();'

и запустить файл наподобие index.php

    php -f index.php
23
задан Unknown 4 June 2009 в 22:20
поделиться

2 ответа

Обычно, если ожидается, что приложение будет обрабатывать миллион соединений, вы можете комбинировать многопоточную парадигму с основанной на событиях.

  1. Сначала создайте N потоков, где N == количество ядер / процессоров на вашем компьютере. У каждого потока будет список асинхронных сокетов, которые он должен обрабатывать.
  2. Затем для каждого нового соединения от акцептора «балансируйте нагрузку» нового сокета на поток с наименьшим количеством сокетов.
  3. Внутри каждого потока используйте модель на основе событий для всех сокетов, чтобы каждый поток мог фактически обрабатывать несколько сокетов «одновременно».

При таком подходе,

  1. Вы никогда не создадите миллион потоков. У вас ровно столько, сколько может обработать ваша система.
  2. Вы используете многоядерную систему, основанную на событиях, а не одноядерную.
21
ответ дан 29 November 2019 в 02:56
поделиться

Не уверен, что вы имеете в виду под «низкой активностью», но я считаю, что главным фактором будет то, сколько вам действительно нужно сделать для обработки каждого запроса. Предполагая однопоточный цикл обработки событий, никакие другие клиенты не будут обрабатывать свои запросы, пока вы обрабатываете текущий запрос. Если вам нужно сделать много вещей для обработки каждого запроса («много» означает что-то, что требует значительных ресурсов ЦП и / или времени), и если ваша машина действительно способна эффективно работать в многозадачном режиме (это время не означает ожидание общего ресурс, например, машина с одним процессором или аналогичный), вы получите лучшую производительность за счет многозадачности. Многозадачность может быть многопоточной моделью блокировки, но это также может быть однозадачный цикл событий, собирающий входящие запросы,

0
ответ дан 29 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: