Olegatorapp
@Olegatorapp
Java/Android dev

Как использовать максимум процессора для выполнения многопоточной задачи?

Есть сервис, который сейчас работает параллельно с ~2000 клиентов и соответственно потоки на них.
Раньше это реализовано было через:
@Configuration
@EnableAsync
public class AsyncConfig  implements AsyncConfigurer {

  @Bean(name = "threadPoolTaskExecutor")
  public Executor threadPoolTaskExecutor() {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(Runtime.getRuntime().availableProcessors());
    executor.initialize();
    return executor;
  }

И в контроллере метод помечен @Async("threadPoolTaskExecutor")

Но в тестовом режиме, загружая систему примерно на 100 000 запросов с 2000 потоков (через tomact: ab -n 1000000 -c 3000 ") проц всё ещё остаётся загружен всего на 36%.

Как увеличить использование процессора и ускорить выполнение таким образом?
  • Вопрос задан
  • 379 просмотров
Решения вопроса 1
Простой ресурсов сам по себе - не проблема, а счастье. Проблемой является простой ресурсов при заметной деградации сервиса.
Но в тестовом режиме, загружая систему примерно на 100 000 запросов с 2000 потоков (через tomact: ab -n 1000000 -c 3000 ") проц всё ещё остаётся загружен всего на 36%.

Ответ приходит за какое время? Сколько времени выполняется 1 запрос при нулевой загрузке? При каком количестве запросов происходит деградация сервиса?
увеличить использование процессора и ускорить выполнение не обязательно ходят вместе. Процессор может простаивать по причине ожидания ввода-вывода, но так же и потому, что он легко справляется с текущей нагрузкой.
В любом случае, спрашивать надо не на тостере, а у профилировщика: куда уходит время цпу, в каких ситуациях появляется простой цпу, какое соотношение простоя к полезной работе. Если сервис долго ждет ввод-вывод - нужно ускорять именно ввод-вывод, а не стараться нагрузить процессор.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы