Как повысить эффективность java.net.ServerSocket и java.net.Socket? - PullRequest
0 голосов
/ 24 декабря 2010

Интересно, каковы ограничения java.net.ServerSocket и java.net.Socket в запросе в секунду.Я пишу просто тестовый код (также многопоточный) и нахожу ограничение около 1200 запросов в секунду на моей машине (тест на двухъядерном процессоре, 64-битном Linux и 32-битном Windows).

Есть ли решение для java для увеличения соотношения навторые несколько тысяч?Отношение издержек JVM к большим для нескольких тысяч?

Хочу отметить, что я понимаю, что Java использует нативный код для этой части кода, а тесты зависят от ОС (конфигурация и реализация).

Ответы [ 2 ]

4 голосов
/ 24 декабря 2010

Трудно сказать, не глядя на ваш код.

С одной стороны, есть вещи, которые ваше приложение могло бы делать, которые замедляли бы сетевой ввод-вывод (фактически весь ввод-вывод). Например, чтение или запись небуферизованного потока / читателя по одному байту за раз. Также возможно, что происходит много переключений потоков. Или, может быть, вам следует использовать NIO для повышения пропускной способности.

С другой стороны, медлительность может быть вызвана большой задержкой в ​​сети, низкой пропускной способностью сети или перегрузкой ... или сетевым стеком ОС, который не особенно хорош.

Или это может быть что-то еще.

2 голосов
/ 24 декабря 2010

При обратной петле вы должны иметь возможность достигать 50 000 запросов в секунду (при условии, что запрос тривиален). Я предлагаю вам попробовать это, чтобы увидеть, что это для вашей машины. Как предполагает @Stephen C, другие факторы, такие как выполнение запроса и характеристики сети, будут иметь гораздо большее значение.

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