Загрузка…





  • Сообщения   Поиск
  • Dmitry Podyachev12.02.2009 10:45   
    построение системы для обработки большого числа запросов

    Ищу решение для следующей ситуации:
    Существует приложение с динамическим формированием объектов. т.е. например, у меня есть приложение, которое обслуживает 200 запросов "одновременно" (за 5 секунд "вычисляются" 1000 web-ответов).
    При увеличении загрузки я планирую использовать отдельный сервер для "распределения" запросов (load balancer) между такими серверами. Но какую ожидать модель поведения ??? Ведь не отказ в обслуживании надо получить, а надежность за определенную избыточность (цена которой лишние сервера).
    Какие последнии рекомендации о массштабировании систем и о том, как прогнозировать увеличение загрузки и скорости выполнения (скажем для 100000 запросов)? Как правильнее эмулировать "предельную" нагрузку - чтобы понять, когда пойдут отказы ?
    Из чего сделать вывод, что лучше - увеличить мощность сервера (установить более быстрые процессора), улучшить память, увеличить ее объем или добавлять дополнительный сервер ?
    *Origin: чем больше процессов, тем медленее между ними переключение ;-(



    Dmitriy Vyukov14.02.2009 07:17
    Рейтинг
     
    Re: построение системы для обработки большого числа запросов

    Цитирую -Dmitry Podyachev
    При увеличении загрузки я планирую использовать отдельный сервер для "распределения" запросов (load balancer) между такими серверами. Но какую ожидать модель поведения ??? Ведь не отказ в обслуживании надо получить, а надежность за определенную избыточность (цена которой лишние сервера).


    Что подразумевается под моделью поведения?



    ---------------------------------------------
    All about lock-free algorithms, multicore, scalability, parallel computing and related topics:
    www.1024cores.net

    Dmitriy Vyukov14.02.2009 07:25
    Рейтинг
     
    Re: построение системы для обработки большого числа запросов

    Цитирую -Dmitry Podyachev
    Какие последнии рекомендации о массштабировании систем и о том, как прогнозировать увеличение загрузки и скорости выполнения (скажем для 100000 запросов)?

    Для балансировки такой экстремальной нагрузки можно рассмотреть использование аппаратного балансировщика. Центральному софтварному серверу будет сложно справить с такой нагрузкой, и опять же SPOF.
    Если используется ASP.NET или Java EE, то там есть готовые решения для организации т.н. web farm (множество серверов). Так же для web систем существует т.н. DNS load-balancing (DNS сервера выдают разные IP, возможно в зависимости от географического расположения клиента, например Google такое использует).
    А так, в целом, всё зависит от деталей - самые эффективные оптимизации всегда проблемно-зависимые. Например, если можно нагрузить клиентов балансировкой, то это будет очень разумно - т.е. клиенты сами выбирают из нескольких серверов и к нему коннектятся - нет центрального bottleneck'а, нет SPOF.



    ---------------------------------------------
    All about lock-free algorithms, multicore, scalability, parallel computing and related topics:
    www.1024cores.net

    Dmitriy Vyukov14.02.2009 07:32
    Рейтинг
     
    Re: построение системы для обработки большого числа запросов

    Цитирую -Dmitry Podyachev
    Как правильнее эмулировать "предельную" нагрузку - чтобы понять, когда пойдут отказы ?


    Выделить use-cas'ы целевой системы, исходя из этого опредлить соотношение запросов разных типов. Т.е. например, 20% запросов типа 1, 50% запросов типа 2, 30% запросов типа 3. В таком соотношении и подавать запросы во время теста.
    Елси речь идёт о глобальной системе, то бич таких систем - "медленные клиенты". Т.е. например 10% соединений будут очень медленными, сервер будет готовить "объёмный" ответ для этих соединений, однако ответ будет отправляться долго, соотв. висеть в памяти сервера. Целесообразно это тоже включить в тест. Я думаю, что это можно сэмулировать программно в тестовом клиенте - установить очень маленький буфер для сокета и не вычитывать его.



    ---------------------------------------------
    All about lock-free algorithms, multicore, scalability, parallel computing and related topics:
    www.1024cores.net

    Dmitriy Vyukov14.02.2009 07:41
    Рейтинг
     
    Re: построение системы для обработки большого числа запросов

    Цитирую -Dmitry Podyachev
    Из чего сделать вывод, что лучше - увеличить мощность сервера (установить более быстрые процессора), улучшить память, увеличить ее объем или добавлять дополнительный сервер ?


    По поводу памяти и процессора - очень просто - достатчно поглядеть на объём занимаемой процессом памяти и загрузку процессора. Если что-то из этого "на пределе", то увеличение пойдёт на пользу. А если, например, процессор загружен только на 50%, то ставить более быстрый процессор бесполезно.
    По поводу диска тоже надо оценить используемую пропускную способность и насколько она близка к теоретическому максимуму. Если близка, то можно увеличивать скорость диска (ставить RAID или SSD).
    По поводу скорости памяти... хм... не знаю... наверное надо профилировать и смотреть аппаратные счётчики производительности и считать какой процент времени процессор простаивает из-за ожидания памяти...
    Т.е. общий принцип: (1) смотреть какой ресурс является основным сдерживающим фактором, т.е. загружен на 100%, увеличивать его. goto (1).



    ---------------------------------------------
    All about lock-free algorithms, multicore, scalability, parallel computing and related topics:
    www.1024cores.net

    ialexander09.11.2009 05:15
    Рейтинг
     
    Re: построение системы для обработки большого числа запросов

    Цитирую -Dmitry Podyachev
    Из чего сделать вывод, что лучше - увеличить мощность сервера (установить более быстрые процессора), улучшить память, увеличить ее объем или добавлять дополнительный сервер ?
    *Origin: чем больше процессов, тем медленее между ними переключение ;-(

    В самом деле, почему вы не используете такое стандартное решение как веб-фермы? Заодно повысится надежность системы. При это не стоит ставить очень мощные сервера, лучше поставить 10 средних, вместо 2 мощных. (и подешевле выйдет) Именно так поступает Google: http://research.google.com/pubs/papers.html
    А вот обощение на русском: http://www.webplanet.ru/news/reading-room/2005/12/5/archit.html
    Думаю вам будет интересно как с такими проблемами справляется Гугл.


Быстрый переход:  

Статистика форумов Intel Software Network

469 пользователей 539 тем и 6,214 сообщений.

За последние 24 часа появилось 0 новых тем 0 новых сообщений и 0 новых пользователей.

Самая популярная тема за последние 3 дня сортировка omp/tbb Больше всего ответов отправлено на сообщение Хотеть не вредно Наибольшее количество просмотров у сообщения сортировка omp/tbb

Приветствуем нового пользователя gameofthrones


Пожалуйста, обратитесь к странице Уведомление об оптимизации для более подробной информации относительно производительности и оптимизации в программных продуктах компании Intel.