Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Архитектура клиент-сервер. Вопрос, как правильно сделать?
|
|||
|---|---|---|---|
|
#18+
Друзья, всем привет. Вопрос по архитектуре. У меня есть сайт, который работает на ASP.Net C#. Есть клиент, Win-приложение, так же написанное на C#. Клиентов таких огромное количество, пользователи скачивают в свобоном доступе и запускают на своих компьютерах. Вопрос заключается в том, как правильно организовать раздачу заданий данным клиентам. У меня сейчас организовано через обычный web-сервис .asmx - на клиенте делаю задержку в 3 секунды и опрашиваю сервер на наличие задания. На сервере каждый раз из базы выгребается не простой процедуркой задача, и если есть такая - то отдается на клиент. Клиент по выполнению задания - так же отдает результат на сервер через сервис. Понимаю что при росте числа клиентов у меня мой сервер начнёт постепенно загибаться. в данный момент около 50 клиентов нормально работает. Но планы на 1000 как минимум, а то и на 1кк клиентов. Как быть в данном случае? Благодарю за любую информацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2016, 03:22 |
|
||
|
Архитектура клиент-сервер. Вопрос, как правильно сделать?
|
|||
|---|---|---|---|
|
#18+
MathewSun, Сначала нужно определить узкое место. Почему 1к клиентов могут нагнуть сервер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2016, 11:40 |
|
||
|
Архитектура клиент-сервер. Вопрос, как правильно сделать?
|
|||
|---|---|---|---|
|
#18+
MathewSun, Нужно провести нагрузочное тестирование: 100 клиентов, 500 клиентов, 1000 клиентов. Для этого сами клиенты не нужны, нужно только обращение к веб-сервису. Снять метрики, выявить узкое место, закатать рукава и заняться оптимизацией. Основная техника оптимизации -- это кеширование на сервере для снижения количества обращений к СУБД, для снижения нагрузки на сервер также поможет кеширование на клиенте, чтобы не запрашивать каждый раз одно и тоже. Вот как быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2016, 18:20 |
|
||
|
Архитектура клиент-сервер. Вопрос, как правильно сделать?
|
|||
|---|---|---|---|
|
#18+
MathewSunНа сервере каждый раз из базы выгребается не простой процедуркой задача, и если есть такая - то отдается на клиент. ИМХО вот это надо переписать. При добавлении в базу данных формировать задачи в законченном виде и выгребать тривиальным запросом вместо не простой процедурки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2016, 20:13 |
|
||
|
Архитектура клиент-сервер. Вопрос, как правильно сделать?
|
|||
|---|---|---|---|
|
#18+
skyANAMathewSunНа сервере каждый раз из базы выгребается не простой процедуркой задача, и если есть такая - то отдается на клиент. ИМХО вот это надо переписать. При добавлении в базу данных формировать задачи в законченном виде и выгребать тривиальным запросом вместо не простой процедурки. Для каждого клиента выдаются разные задания.. И они могут зависить от уже выполненных другим клиентом. Запросы уже оптимизированы. Кеширование тут тоже не поможет, это не странички, а ответы на методы сервиса. Они все уникальные. С нагрузками так и займемся, будем искать точку падения. Спасибо. Интересны примеры, как организованы архитектурно такие проекты. Например та же icq. Сотни тысяч клиентов шлют запросы. Хотя? как я понимаю тот же youtube и vkontakte этот тот же сервер, который отдает клиенту результат. И если веб-серверы (ns) разные, то обращение все равно идет к одной машине с базой (которая кластер). Как я понмиаю тут нужно выяснить предел текущей нагрузки, максимально оптимизировать код и уже если будут расти нагрузки - увеличивать мощность рабочей станции. Вопрос наверно по самой архитектуре. Правильно ли с клиентов опрашивать каждые три секунды сервер. Хотя другого пути наверно нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 05:51 |
|
||
|
Архитектура клиент-сервер. Вопрос, как правильно сделать?
|
|||
|---|---|---|---|
|
#18+
MathewSunskyANAпропущено... ИМХО вот это надо переписать. При добавлении в базу данных формировать задачи в законченном виде и выгребать тривиальным запросом вместо не простой процедурки. Интересны примеры, как организованы архитектурно такие проекты. Например та же icq. Сотни тысяч клиентов шлют запросы. Хотя? как я понимаю тот же youtube и vkontakte этот тот же сервер, который отдает клиенту результат. И если веб-серверы (ns) разные, то обращение все равно идет к одной машине с базой (которая кластер). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 08:01 |
|
||
|
Архитектура клиент-сервер. Вопрос, как правильно сделать?
|
|||
|---|---|---|---|
|
#18+
Что и где применять сильно зависит от проекта, данных, их динамики, характера нагрузки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 08:05 |
|
||
|
Архитектура клиент-сервер. Вопрос, как правильно сделать?
|
|||
|---|---|---|---|
|
#18+
MathewSunskyANAпропущено... ИМХО вот это надо переписать. При добавлении в базу данных формировать задачи в законченном виде и выгребать тривиальным запросом вместо не простой процедурки. Вопрос наверно по самой архитектуре. Правильно ли с клиентов опрашивать каждые три секунды сервер. Хотя другого пути наверно нет. Вы сами не хотите рассмотреть другие пути... MathewSunДля каждого клиента выдаются разные задания..почему это проблема? MathewSunИ они могут зависить от уже выполненных другим клиентом. Запросы уже оптимизированы.задания орашиваются каждые 3 секунды, а выполняются очевидно во много раз дольше. То есть пересчитать зависимости при сохранении выполненного задания - это гораздо более редкая процедура и сильно снижает нагрузку на сервер БД. а так всё идёт через один Web-service, то можно это делать асинхронно прямо в памяти сервиса. MathewSunЗапросы уже оптимизированы.и выполняются за 10 ms? Тогда зачем что-то менять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 08:21 |
|
||
|
Архитектура клиент-сервер. Вопрос, как правильно сделать?
|
|||
|---|---|---|---|
|
#18+
MathewSunКак я понмиаю тут нужно выяснить предел текущей нагрузки, максимально оптимизировать код и уже если будут расти нагрузки - увеличивать мощность рабочей станции. Да, но для начала тупо запустите Perfomance Monitor.. У Вас в пике 17 запросов в секунду - это какбы совершенно ни о чём для современных рабочих станций. А рабочая нагрузка может легко оказаться в 5 раз меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 08:28 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=39223124&tid=1355921]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
23ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 308ms |

| 0 / 0 |
