On Fri, 15 Oct 1999, Alex Tutubalin wrote:
Привет!
Сорри за нек. задержку с ответом - экзамен по философии в аспирантуру
сдавал. 8-)
> Вот тут мной пишется очеpедная поделка - www-chat (пожалуй, из массовых вещей
>я
> только баннеpный обмен еще не писал :)
может, сразу и примешься? 8-) вполне серьезно. занятие, наверное, более
благодарное, чем написание чата..
> Возникает вопpос - как пpавильно обновлять содеpжимое окон клиентских
> бpоузеpов?
> Есть подозpение, что meta refresh может дать кpайне непpиятные волны нагpузки
> за счет авто-синхpонизации всего хозяйства (если случайно получится так, что
> pавномеpная нагpузка вдpуг пеpестанет быть таковой, то она сама может начать
> собиpаться в волны). Что делать ? meta refresh with random delay ?
в принципе, может, но как показывает практика, такая ситуация возникает
только при 'make; apachectl restart' - загрузка машины увеличивается до
7-12, а потом спадает где-то до 1.5-2. В общем, ничего особо
криминального. Непрерывных волн нагрузки практически не
наблюдается - роль random delay с успехом выполняет разница в скорости
передачи данных клиентам (как раз 3-5 секунд при рефреше с частотой 10-15
секунд). Поэтому вполне приемлемым решением является <meta refresh=> с
периодом, регулируемым из настроек (~25% пользователей меняют себе
частоту, вместо принятой по умолчанию). С <meta refresh> будут некоторые
проблемы, если "опускать" окно разговоров вниз, а не писать фразы
снизу вверх, но это вполне решаемо. Кстати, безусловно, чат для
400-600 одновременных клиентов просто обязан быть апачевским модулем
(хотя, зная Алекса, это можно было и не упоминать 8-).
А для того, чтобы хоть немного снизить нагрузку (не столько на машину,
сколько на канал -- когда чатовский трафик начал зашкаливать за
10 Гб/сутки) я недавно на "Кроватке" ввел новую технологию обновления
окна: connection с клиентом не разрывается, и раз в секунду проверяется,
нет ли новых сообщений на вывод: есть - ap_rputs() и яваскриптовский
scroll() нет - sleep процессу. "Рефреш", конечно, можно установить
из настроек, но это делают только 5-8% людей. А трафик уменьшается,
как не сложно догадаться, ровно во столько раз, сколько /в среднем/
рефрешей одна фраза "держится" на экране. Кроме того, скорость
общения практически стала, как в IRC.
Самый большой недостаток - естественно, 658 processes: 2 running, 656
sleeping, и ужасающий netstat -a ('netstat -a | wc -l' == 1896)
впрочем, эти проблемы решаются установкой 512 Mb оперативки
> Особенно интеpесно мнение хозяина Кpоватки, благо он тут встpечается.
встретился 8-)
> p.s. Планиpуемая нагpузка - большая, железо слабое, канал быстpый :)
Васенинский? все равно чат сумеет забить. 8-)
P.S> а оно тебе очень надо - писать чат с нуля? Причем, не простой, как
я понимаю.. А например, только на составление словаря для "матотестера" в
чате у меня ушло около двух месяцев (зато он фильтрует мат по ~200
правилам его образования 8-), есть куча тонкостей, связанных с подстройкой
под конкретные броузеры и т.д. и т.п.
Я двумя руками за то, чтобы популярные сервера либо открывали "каналы"
на кроватке (примеры: Omen, gamecenter.ru), автоматически получая
некоторый приток посетителей к себе, либо ставили у себя "экспортную
копию" чата. И в том, и в другом случае дизайн чата делается в стиле
самого сайта. IMHO, приличнее, чем стандартные бесплатные чаты.
P.P.S> а железо все-таки потребуется не очень слабое 8-) PII-350/256
рекомендуется.
--
Art [Artem Podstreshny] Radio-MSU Network Center
+7 (095)932-8880 http://www.radio-msu.net/~art/
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =