Оптимизация работы чата

andygray

Guest
Оптимизация работы чата

Мы разрабатываем систему Live Chat (online support), это софт из серии http://www.providesupport.com/product/screenshots.html

У меня возник вопрос по поводу быстродействия чата. Есть подозрения, что принятый нами подход не оптимален для подобного рода приложений. Более того, если задать время обновления информации менее 10ти секунд, то сервер падает.

Проиллюстрирую подход к обновлению следующим изображением:



Как видно, софтом (LCP) пользуются два типа юзеров - операторы и посетители. Каждый оператор может общаться сразу с несколькими посетителями. Количесвто и тех и других не ограничено.

Данные у операторов обновляются так - в специальном окне Chat Room есть iframe, который перезагружается каждые N секунд. Он дёргает script1.php, который передаёт новые данные.

В пользовательских окнах есть изображение, которое так же перезагружается каждые M секунд, дёргая script2.php


В чём минусы подобной реализации?
Какие есть альтернативы?
 

andygray

Guest
Tor это не совсем чат. Я поищу, спасибо.

Как я понял, можно сделать прослойку между DB и script1&2 в виде кеша. Это должно послабить нагрузку на базу. Других подходов по сёрчу не нашёл.
 

SiMM

Новичок
> Какие есть альтернативы?
Поднять IRC-сервер и не париться.
 

Steamroller

Новичок
andygray, а сколько запросов в секунду получается, когда ставишь частоту обновления, такую что он валится?
И какая планируется рабочая частота запросов?

По идее надо исходя из этих цифр понять, может и в лоб можно вашу схему реализовать, только затюнить базу, скрипты, и веб-сервер на быструю отдачу.
 

andygray

Guest
Автор оригинала: SiMM
> Какие есть альтернативы?
Поднять IRC-сервер и не париться.
Спасибо, но в нашей ситуации это неприемлимо =\

-~{}~ 29.09.05 18:16:

Steamroller, пиковой нагрузкой можно считать 1000 запросов в минуту.
 

Steamroller

Новичок
andygray, тогда вполне можно все настроить, чтоб работало со свистом. :)
1) Веб-акселератор должен быть перед скриптами - чтобы скрипты отрабатывали с максимальной скоростью вне зависимости от скорости соединения у посетителя. Подойдет что угодно, squid, Apache2/worker.mpm, nginx, lighttpd etc.
2) MySQL - посмотреть все запросы чтобы не сканили таблицы, а доставали инфу с помощью индексов
3) для скриптов - eaccelerator какой-нибудь, чтоб они работали быстро.
 

andygray

Guest
Steamroller, веб-акселераторы и eaccelerator - это модули апача, или просто библиотеки?
 

Steamroller

Новичок
andygray, под веб-акселератором в данном случае имеется ввиду промежуточный веб-сервер, который принимает запрос извне, передает этот запрос Апачу, получает от него ответ, и отдает клиенту. Преимуществ дает массу, одно из основных - то, что Апач быстро выплевывает запрошенную информацию, и снова готов принимать следующий запрос, а при отсутствии акселератора - Апач может еще какое-то время заниматься перекачиванием данных клиенту (у него может быть медленный канал например).
eaccelerator - это расширение для php, которое если вкратце - ускоряет работу. :)
 
Сверху