Наиболее подходящий дизайн для серврера которому будут обращаться очень часто, много компьютеров за маленьким ответом?
Сейчас:
Есть IIS и SQL DB. Много компьютеров раз в 20 сек обращаются к IIS, тот в свою очередь обращается к DB, делает не сложный запрос и возвращает ответ запросившему компу.
Проблема:
Это работало очень медленно и при 300 компьютеров которые стучаться на сервер CPU был на 100% почти всё время (сервак хороший, дело не в железе)
Предпринятое:
Всё нужные данные из SQL перенесли в dictionary аплиукации IIS-a и есть отдельный task который синхронит SQL с dictionary. Всё ещё работает недостаточно хорошо. При тех же 300 коннектов на сервере (даже не 300, а намного меньше, ведь все компьютеры стучаться раз в 20 сек, но у каждого свои 20 сек, а значит кол-во одновременных подключений "расплывается") CPU допрыгивает до 60%...
Вопрос:
Какие технологии существуют для решения описанной проблемы и куда копать? Спасибо!
Сейчас от ms, но не что не мешает мне его сменить если надо. Просто mysql performance достаточно популярный тег, вот и добавил. Думаю тип проблемы мог быть и на mysql
Хотите на ноде сделать? Чего node.js в тегах? Если ничего не мешает сменить IIS на ноду, то сделайте между клиентами и сервером WebSockets или Server-Sent Events, сделайте в оперативной памяти кеш, обновляейте его раз в 2 секунды, и в случае изменения, т.е. когда кеш изменился, то выдавайте по сокетам или sse событие, а долбить сервер запросами - бросьте это. Если не хотите решать вопрос радикально, то хотя бы отдавайте из IIS статический файлик и перегенерируйте его каждые N секунд.
@MarcusAurelius
Ну да, нод знаю и он мне нравится и чувствуется, что он может решить мою проблему.
SSE - проверю. Не знаю о чём вы.
Решение с вебсокет- интересное. А нормального сервара хватит на 10000 открытых вебсокетов, как считаете?