Обработка запросов и нагрузка сервера

Что использовать для очереди сообщений в маленьком проекте

  • Node.js

    Голосов: 0 0,0%
  • Long-polling

    Голосов: 0 0,0%
  • AJAX запросы по таймеру с проверкой состояния

    Голосов: 9 100,0%

  • Всего проголосовало
    9

saxon

Новичок
Очередной вопрос под связку
Win + Aoache + PHP + MySQL
Есть очередь сообщений. каждый клиент (не обязательно браузер) подписывается на события в этой очереди и каждые Н секунд (1-2) проверяет, не поступили ли новые сообщения.
Очередь = массив в классе, который между запросами хранится в APC (сериализация/десериализация).
Проблема в том, что уже при 3-5 вкладках нагрузка на 6-ядерный Феном до 10% (вообще вряд ли количество клиентов будет 10 хоть когда-либо, но все же).
Чувствую, придется переделывать, но вариантов пока нет.
Здесь прекрасно подошла бы технология COMET. Но тот же Node.js не подходит.
Long-polling запросы как-то тоже не хочется. какие варианты есть?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
5,10,15,50 вкладок - это копеечная нагрузка.
Расставь временные метки, ищи узкое место.

>Проблема в том, что уже при 3-5 вкладках нагрузка на 6-ядерный Феном до 10%
Проект будет жить под виндой, или на нормальном сервере?.
В боевых условиях пробовал?
У меня под 7-кой, особенно если еще свн есть в проекте и фреймворк какой-нить с 100500 тыс. файлов, комп просто офигевает.

Интересно, на этот опросник хоть кто-то ответит? :D
 

saxon

Новичок
жить под виндой должно. нагрузка больше не предполагается.
поэтому и спрашиваю, потому что в шоке от показателей.. придется профайлить (
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
жить под виндой должно. нагрузка больше не предполагается.
Ну так локализируй проблему.
1. Расставь временные метки, сделай замеры.

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

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
saxon
Да хотя бы связка PHP+Apache уже должна намекать на то, что на любой реквест у тебя будет дергаться нехерово весящий в памяти демон апача, но ты гуру, а мы смертные ничерта не понимаем ;)

Проблема в том, что уже при 3-5 вкладках нагрузка на 6-ядерный Феном до 10%
Ты не знаешь как найти узкое место? Ситуация, скажем так, странноватая. Я про нагрузку...
 

saxon

Новичок
Да, профайлить и так сейчас буду.

сносить свн с проекта и т.д.
А как это может влиять?

Обработчик запроса идет по контроллеру - создается класс-контроллер на основе команды из GET, инициализируется модель из APC (отложенной загрузкой).

надо было еще пунктик "хз, но хочу посмотреть результаты"
Да, понимаю, но опыта в разработке на PHP у меня в сумме и нескольких недель не наберется, а задачу решить нужно.
 

saxon

Новичок
Да хотя бы связка PHP+Apache уже должна намекать на то, что на любой реквест у тебя будет дергаться нехерово весящий в памяти демон апача
А какие варианты есть? Я уже пробовал настроить это на Nginx, Lighttpd - под винду они мягко говоря отказываются работать стабильно.
Сейчас использую microapache.
Задача - запустить под Вин некую CMS (которой нужны PHP, MySQL).
Самым легким спсобом.
но ты гуру, а мы смертные ничерта не понимаем
Я такого не говорил. И более того, постом выше опроверг это. Вариантов лучше текущего не нашел.

Узкое место найду, естественно. Изначально вопрос был не как найти узкое место, а как иначе реализовать (и можно ли) поставленную задачу
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
AJAX через setTimeout, самый по-моему разумению нормальный метод. Но для таких вещей, все ж таки лучше подойдет *nix в связке php-fpm+nginx

На совсем крайний случай можно попробовать поднять виртуалку.
 

saxon

Новичок
Самое прикольное, что это не для внутренних нужд.
Поэтому нужно буквально запускать сервер + MySQL + PHP и на этом выполнять такие операции. Меняться может только код и сервер. Хотя с последним вариантов особо и нет под Вин
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Проблема же не в способе получения, а в том, что сервак __возможно__ не держит нагрузку.
Способ получения не особо играет роль.

Очевидно, что нужно найти узкое место.
Которое 70% в кривом приложении, 30% в винде.
У меня апач под виндой больше 30 qps-ов не держит, что-бы я не делал.

запусти 100500 клиентов. Нагрузка на ЦПУ может и не расти.
Может она растет в момент "рождения" апачей.
 

A1x

Новичок
если предполагается какая-то нагрузка то от апача надо избавляться однозначно
попробуйте запустить *nix + php-fpm+nginx в виртуалбоксе на своей винде
 
Сверху