2013-12-07 4 views
3

Я разрабатываю сервер приложений HTTP, используя Netty 4 и JDBC (+ BoneCP для объединения пулов).Как использовать JDBC для максимальной производительности Netty?

До сих пор я выполнял всю работу (работы с подключениями к базе данных, HttpAsyncClient и т. Д.) На одном обработчике. Я закрываю все операции ввода-вывода после завершения каждой работы.

Насколько я знаю, Netty работает хорошо, пока ничто не блокирует рабочий поток.

Однако, I read, что соединения JDBC создают блокирующий ввод-вывод.

Есть ли хорошая практика использования JDBC с Netty для повышения масштабируемости и производительности?

ответ

2

Убедитесь, что у вас достаточно соединений с базой данных, очевидно, что ваши работники заблокируют ожидание соединения, если ваш пул не подключен. Работник будет ждать нового соединения (если пул разрешен для роста) или ожидает возврата соединения в противном случае. В противном случае используйте общие рекомендации. Настройте свои чтения с помощью setFetchSize() и ваши записи, используя пакетную обработку. Минимизируйте свои поездки туда и обратно, и получите только данные, которые вам нужны. У вас есть определенный код (или запрос), который медленный?

2

Как вы знаете, Netty предоставляет EventExecutorGroup, чтобы начать отдельную тему. Блокирующие вызовы (например, JDBC-соединения и т. Д.) Должны выполняться в этом потоке, а не в одном из запусков цикла событий, так что цикл основного события не будет заблокирован и будет реагировать.

Смежные вопросы