Соединение нитей замедляет работу системы? - PullRequest
0 голосов
/ 16 марта 2012

Друзья !!!

Я работаю над программным обеспечением для отслеживания GPS-устройств. У нас есть почти 3000 устройств, которые общаются с нашим сервером через слушателя Java TCP. Я создаю отдельный поток для каждого устройства, поскольку после установления соединения с устройством я не хочу терять соединение с устройством, поскольку для повторного создания соединения требуется время.

После запуска прослушивателя TCP загрузка ЦП увеличивается на 99% и система становится нестабильной. Пожалуйста, помогите мне найти решение: A. написать TCP слушатель в Java, который может обрабатывать более 3000 потоковых соединений для 3000 устройств B. Для минимизации использования процессора.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 16 марта 2012

A - это неправильный способ, и это подразумевает B. Если ваш сервер не работает на своего рода бесконечно масштабируемой хост-ферме, вы не должны создавать поток для обработки каждого входящего запроса. Вы не упоминаете, какое именно соединение вы имеете в виду, но в целом: правильный способ - это спроектировать сервер, который будет использовать определенное (небольшое) постоянное количество потоков (для вашего масштаба, вероятно, так) для прослушивания входящих соединений и обслуживайте их асинхронными операциями, связанными с вводом / выводом , которые вообще не потребляют процессорного времени.

0 голосов
/ 16 марта 2012

Дайте Проблема C10K чтение. Посмотрите здесь и здесь для некоторых заметок, специфичных для Java.

Вы хотите использовать неблокирующий уровень ввода-вывода Java для обработки больших нагрузок соединения. Документы от JDK 1.4.2 являются хорошей отправной точкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...