webew
Войти » Регистрация
 
PHP

Как уменьшить нагрузку?

21 августа 2008, 13:58
Автор: Serg_pnz
Разрабатываю чат на ajax.

Сейчас при 10 посетителях и активной беседе имею
chathom chat.***.net 2.35 20.45 0.0
Top Process %CPU 1.8 httpd [chat.***.net] [/ajaxscripts/Chat/users.php?1219308422609]
Top Process %CPU 1.7 httpd [chat.***.net] [/ajaxscripts/Chat/users.php?1219305902421]
Top Process %CPU 1.3 httpd [chat.***.net] [/ajaxscripts/Chat/users.php?1219309801733]

Логика работы чата:
1. Каждые 10 секунд опрашиваем есть ли вновь-пришедшие (результаты кешируется в файл. Долго объяснять, но поверьте на слово, что из всех чатлан только одна машина
делает запрос в базу и сохраняет результат в файл, остальныные читают из файла)
2. Если чатланин молчит, то каждые 15 секунд идет запрос на новые фразы. Если сказал - то выводится его сообщение и новые на этот момент.
3. Каждые 20 секунд идет запрос, подтверждающий, что чатланин в чате.

Хостер говорить, что 20% нагрузка на ОЗУ - это много. Натолкните на мысль - за счет чего её можно снизить?
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
NO USERPIC

rgbeast

Поясните пожалуйста подробнее работу чата:
1. почему запрос в пункте 3 должен выполняться отдельно и об онлайновости юзера нельзя судить по запросу им новых сообщений каждые 15 секунд?
2. Сколько серверов используется? Как они связаны между собой. Как происходит чтение файла? Кто такие чатлане, сколько их?
21.08.2008, 14:09
Ответить

Serg_pnz

1. По п.3: а если у меня окно открытое, а я просто читаю минут 5 или там по телефону разговариваю, но из чата не хотел бы уходить? Поэтому и подтверждение присутствия. Есть мысль увеличить интервал до 1 минуты...

2. 1 сервер

3. Чтение происходит по require

4. Чатлане - это участники чата. Кстати забыл ссылку дать. Вот, милости прошу ко мне в гости
rgbeast, как зайдете в чат, так сразу и станете чатланином ;)
21.08.2008, 14:18
Ответить

Serg_pnz

Возможности и планы на чат
21.08.2008, 14:27
Ответить
NO USERPIC

rgbeast

1. Если я не закрыл окно, то раз в 15 секунд я запрашиваю нет ли новых сообщений. Это и есть подтверждение, что я онлайн. Не понимаю для чего независимый запрос делать.

2. файл - эффективный, но устаревший способ кэширования. Можно использовать временные таблицы, как описано в статье http://webew.ru/articles/1041.webew или memcached

3. основные таблицы можно делать типа MEMORY и периодически сбрасывать архив в MyISAM-таблицу
21.08.2008, 14:29
Ответить

Serg_pnz

1. Как в мускуле понять, что прошел запрос select? Т.е. как базе "объяснить", что был запрос?

2, 3. Спасибо, буду изучать.
21.08.2008, 15:13
Ответить
NO USERPIC

rgbeast

Просто сделать UPDATE после данного SELECT. Если таблицы правильно построены, то и SELECT и UPDATE будут работать быстро.
21.08.2008, 15:16
Ответить

Serg_pnz

Ну всё, с вами (1234ru, rgbeast и в целом webew.ru) теперь не расплачусь))
21.08.2008, 15:37
Ответить
NO USERPIC

rgbeast

На самом деле мы вам благодарны, что активно участвуете в обсуждениях.
21.08.2008, 15:41
Ответить
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
© 2008—2017 webew.ru, связаться: x собака webew.ru
Сайт использует Flede и соответствует стандартам WAI-WCAG 1.0 на уровне A.
Rambler's Top100