Влияние нескольких ядер на страницу, на обработку которой уходит 5 мс - PullRequest
1 голос
/ 16 декабря 2011

Рендеринг страницы моего весеннего приложения занимает 5 мс, и, используя ab, я получал около 200 запросов в секунду.

Я тестировал на виртуальной машине, которая была одноядерной.

Теперь эта страница просто берет файл XML, анализирует его и инициализирует объект, а затем вставляет объект в mysql.

Теперь, предполагая, что mysql не блокируется (пул соединений недостаточно велик или таблица блокируется), добавление другого ядра должно удвоить количество моих запросов в секунду, верно?

Если я получаю 200 запросов в секунду с одним потоком, работающим с tomcat, я должен продолжать удваивать число своих запросов в секунду, когда увеличиваю количество потоков правильно? (до определенного момента, очевидно).

Что обычно является «горлышком бутылки», поскольку mysql, похоже, способен обрабатывать 3-4 тыс. Вставок в секунду в очень простом приложении с сервлетами.

1 Ответ

2 голосов
/ 16 декабря 2011

Переключение с одноядерного на двухъядерное должно работать так, как вы ожидаете. Если в игру вступит больше ядер и увеличится нагрузка, вы, вероятно, столкнетесь с тем, что планирование потоков не справедливо для всех потоков.

Поскольку больше памяти выделяется и освобождается одновременно, сборка мусора может стать проблемой.

Пока все запросы не приходят быстрее, чем они могут быть обработаны (200 * 5 мс), 1000 мс (у вас должно быть около 300 мс свободного времени). ты в порядке. Но из-за планирования переключение из режима пользователя в режим ядра при каждом системном вызове (в основном ввод-вывод из БД) добавляет дополнительное время, необходимое для обработки запроса. Что может привести к узким местам.

...