сколько сокетов будет использоваться, если Redis используется для хранения Session в PHP? - PullRequest
0 голосов
/ 26 октября 2011

Допустим, я использую Redis для хранения своей сессии в PHP (ранее я использовал mySql 5.0), а сервер Redis находится на сервере, отличном от сервера приложений PHP.Таким образом, когда поступает запрос, сеанс будет создан / загружен из Redis, он займет один сокет с сервера приложений PHP.Когда будет 100 одновременных запросов, будет ли в Redis 100 сокетов?или только один?

1 Ответ

1 голос
/ 26 октября 2011

Redis не имеет встроенного пула соединений, и я не думаю, что текущие привязки Redis для PHP предлагают что-то подобное, поэтому по умолчанию будет открыт один сокет / соединение на поток PHP. Поэтому, если ваш веб-сервер (Apache / Nginx / IIS) попытается обслужить эти 100 одновременных запросов с помощью 100 потоков PHP, будет 100 подключений к Redis.

Если вместо этого сервер сконфигурирован для ограничения числа потоков PHP (я думаю, более распространенным), то эти 100 одновременных запросов будут обслуживаться, возможно, 5 потоками PHP (каждый обрабатывает ~ 20 запросов, один за другим) Это означает, что в любое время будет 5 открытых подключений к Redis. Если они не являются постоянными, у вас будет 100 подключений к Redis и 100 отключений, и только 5 открытых в любой момент. Если соединения постоянны, то у вас будет открыто только 5 соединений, и закрывается только тогда, когда родительский поток PHP завершается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...