Comet, на сервере Apache и PHP. И что теперь с этим делать?

Итак, сделал реализацию comet и в качестве сервера у меня apache, и за ним php.
На клиенте long-polling.

Скрипт (который "тянется" long-polling'ом) каждые 3 секунды делает 3-6 запросов в базу, и при наличии чего ответить отвечает.

Прекрасно понимаю что использовать на стороне сервера apache+php - плохое решение. Это понятно.

Собственно обсудить хотелось бы следующие вопросы:

Сколько примерно одновременно подключенных клиентов такая связка может выдержать?
Что можно сделать для оптимизации?
На какую реализацию comet можно относительно безболезненно перейти с того что сделано сейчас?

UPD
Какие настройки apache, php, mysql надо выкрутить на полную чтобы не возникало блокировок?

1 ответов


Советую использовать Memcached или другие NoSQL БД для хранения информации о том что в БД есть что смотреть. Иначе загнется сервер от таких частых запросов в БД. В случае с использованием Memcached как "посредника" сайт выдержит минимум в 1,5 раза большую нагрузку. Но все зависит от тех запросов которые ты делаешь в БД. Если запросы довольно сложные, то прирост может быть и в 400%! Это что касается оптимизации.

По поводу технологий Comet, вот статья из последних на хабре http://habrahabr.ru/blogs/webdev/119863/?utm_medium=twitter&utm_source=twitterfeed Может найдешь что полезное. Там небольшой обзор и собственный опыт авторов.

По "блокировкам" не совсем понял что именно блокируется. Поэтому ничего сказать не могу.


Откуда данные в базу попадают? Почему они не приходят на сайт, а лишь затем передаются в базу и клиенту их ожидающему? Это первый шаг оптимизации.
Второе - реализация собственных механизмов "многопоточности" вместо стандартных потоков ОС. Обычно именно это становится проблемой COMET приложений.

Ну и собственно, ещё один вопрос. Сколько соединений должно выдерживать приложение?


>>Сколько примерно одновременно подключенных клиентов такая связка может выдержать?
к-во одновременных подключений ограничивается ОС на конкретный порт (вроде слышал цифру примерно около 60К на порт), но это можно похачить :) если сервер твой может обработать больше :)

>>Что можно сделать для оптимизации?
юзать шустрые утилиты :) (nginx+php-fpm+realplexor и т.п.) + писать шустрый код :)

>>На какую реализацию comet можно относительно безболезненно перейти с того что сделано сейчас?
в одном из свои проектов использовали realplexor - оч. хорошо себя зарекомендовал