Оптимизация, кэширование и "многокомпьютерность" программы

ys

отодвинутый новичок
AnToXa
> по сравнению со всем локальным.

ну тогда только storage area остается как общий не сетевой носитель.

Хотя там тоже, в основном, NFS ...
 

Yurik

/dev/null
25 запросов в секунду в среднем, а наверняка суточная нагрузка неравномерна, так это в пик скажем 50 запросов, хехх, это надо отрабатывать страницу за 0,02 секунды. Если сплошная динамика что-то оно нереально при любых раскладах смотрится.
 

Tronyх

Новичок
25 запросов в секунду в среднем, а наверняка суточная нагрузка неравномерна, так это в пик скажем 50 запросов, хехх, это надо отрабатывать страницу за 0,02 секунды. Если сплошная динамика что-то оно нереально при любых раскладах смотрится.
Вот поэтому я и спрашиваю! Как разнести по серверам! И кто юзал хоть одну из тех трёх библиотек (мемкэш, срм, sqlrelay)
 

Tronyх

Новичок
Задаю :)

1. SqlRelay
- на сколько стабильно работает?
- сколько ресурсов съедает по сравнению с "обычнами" mysql_* функциями, а так же во время подключения?
- скорость отправки и получения результата от БД?
- Как много подключений может выдержать?

2. SRM
- на сколько стабильно работает?
- как быстро работают банана классы?
- сколько ресурсов нужно демону?
- как много подключений может выдержать?
- какие глюки возможны?
- если на базе его делать чат-демон, какое соотношение производительности по сравнению с таким же демоном, но на Си?
- кэширование данных (до 40 Мб) на чём лучше делать на СРМ или мемкэш?

3. Memcache
- стабильность?
- потреблнение ресурсов?
- одновременные подключения?
- скорость передачи данных?
 

AnToXa

prodigy-одаренный ребенок
3.
- все стабильно, есть аптаймы больше 3 месяцев
- оверхед в среднем получается процентов 20-30, бо там данные хранятся в кусках памяти по степеням 2, т.е. если положить 100 байт, то будет юзаться кусок 128байт, но это не критично, ес честно :)
- сколько разрешишь открытых дескрипторов на процесс, столько и выдержит, epoll - страшная штука :)
- скорость передачи - ну а какова скорость передачи по tcp ? :)
скорость работы - супер, слышал что на некоторых тестах отдается 1.5-2M гетов в _секунду_
 

Tronyх

Новичок
- сколько разрешишь открытых дескрипторов на процесс, столько и выдержит, epoll - страшная штука
Т.е. при пиковой нагрузке допустим 100 одновременных подключений фигня? А сам демон много памяти хавает? Одновременные подключения он форкает? Или в очередь ставит?

-~{}~ 19.01.05 13:36:

Тогда и кэширование данных лучше делать на мемкэш, а не СРМ? я прав?
 

AnToXa

prodigy-одаренный ребенок
Автор оригинала: Tronyх
Т.е. при пиковой нагрузке допустим 100 одновременных подключений фигня?
ну не на 286 конечно :)

А сам демон много памяти хавает?
в основном данные хавают
Одновременные подключения он форкает?
Или в очередь ставит?
я же говорил epoll
(читаем http://danga.com/memcached/)

-~{}~ 19.01.05 13:36:

Тогда и кэширование данных лучше делать на мемкэш, а не СРМ? я прав?
про СРМ ничего не могу сказать.
memcache специально сделан для кеширования данных в памяти.
 

Tronyх

Новичок
Ещё один вопрос, вызван сообщением si
si
тестировал SQLRelay с ораклом, имеет место падения быстродействия на порядок и больше, если в ответе сервера много записей. Напримет простой SELECT * FROM tbl c 70K записей без SQLRelay выолняетя отсилы пару секунд, с SQLRelay я ответа не дождался, ждал несколько минут.
http://phpclub.ru/talk/showthread.php?s=&threadid=42814&highlight=SqlRelay

Кто-нибудь ещё это заметил? Каким образом тогда лучше постоянное соединение сделать? СРМ? И что из себя будет представлять работа с БД через СРМ? И на сколько быстра/удобна?

-~{}~ 25.01.05 13:00:

Ни кто не юзал SqlRelay? :(
 

fisher

накатила суть
>>А на русском есть что?
по-моему, это очевидно - нет, и вряд ли в ближайшее время будет.
но в FAQ и приложениях fido7.ru.unix.prog есть небольшой документ "как писать сервера"
http://www.opennet.ru/base/dev/server_way.txt.html
http://www.dore.ru/perl/nntp.pl?f=1&gid=22&mid=17451
 

Yurik

/dev/null
Имхо ты не оттуда начал. Начинать надо с разделения данных как это делают разные большие сервисы (например почтовые сервера раскидывают по физическим серверам ящики, счётчики посещений тоже раскидывают и т.д.)
Масштабировать приложение интенсивным путём (мемкеш, постоянные соденинения, оптимизация алгоритмов и т.д.) можно лишь в небольших пределах (ну в пределах порядка), большие системы как бы то ни было работают на многих серверах (Например тут разрабатывают на 100-150 серверов)

Если у тебя всё динамическое и интерактивное то это наверняка какая-то СУБД, с которой общаются SELECT/INSERT/UPDATE/DELETE запросами (ну разные внутренности типа процедур, тригеров, вьюшек затрагивать не будем)
Т.е. надо разносить типы запросов к данным (например INSERT/UPDATE/DELETE на 1 мастере и репликация на N слейвов которые будут получать также часть SELECT запросов)
Если этого не будет достаточно, то надо разносить также и разнородные данные (например часть таблиц реплицировать на одни сервера, часть на другие) или даже однородные данные (если все тормоза упираются в них) - для примера четные/нечетные посты из форума идут по разным зеркалам (ну конечно тут сильно усложняется интерфейсная часть и лишние конекты, но возможно это единственная возможность масштабироваться дальше)
Если мастер не будет справляться с нагрузкой INSERT/UPDATE можно убрать на мастере с таблиц все индексы которые нужны только для SELECTов (оставить только нужные для UPDATE/DELETE)
Когда будет проделана эта работа можно писать интерфейсную часть и раскидывать её по серверам и думать о SRM, SqlRelay, Memcache, демоны, екстеншены etc
Тут тоже возможно можно распаралелить выполнение между разными серверами: скрипт-обертка раздаёт задания и "клеит" результат
 

Tronyх

Новичок
Я уже это продумал. Система вообще без проблем делится на 17 компьютеров (этого должно хватить с головой): 7 серверов со скриптами, 8 серверов с БД, 1 сервер для картинок и статики, 1 сервер для публичной части сайта. Но тем не менее на данный момент не хочется тратить деньги на два сервера, сейчас у нас будет стоять одна машина, всё равно посещаемость сначала далека от планируемой и будет идти тестирование сайта, а через пол года уже можно будет прикупить ещё одну машину. Но тем не менее "плодить сервера" тоже не хочется. Так что вопрос по библиотекам думаю в тему :)
 

Tronyх

Новичок
аля combats.ru :)))))))))))))))))))))))))))))))))))))))

-~{}~ 08.02.05 13:16:

Только не надо меня приколами покрывать ;) Всё нормально - есть деньги, есть 4 человека которые это будут делать.
 

AnToXa

prodigy-одаренный ребенок
хммм, ну вы рассказывайте когда буддет что показать, интересно.
 

Tronyх

Новичок
Показать что? Проект? Думаю в июне на тестирование выйдет.

-~{}~ 08.02.05 13:30:

Ещё для оптимизации вариант - есть таблица с данными игроков. Человек залогинился - копируем всю инфу о нём в другую таблицу хранящуюся в памяти. В итоге получаем рабочую таблицу размером в 15-25 раз меньше да ещё и хранящуюся в памяти. Но тут меня очень сильно смущает ситуация когда пришло пользователей больше чем расчитано - и память кончается... Ваши мнения?
 
Сверху