Tcp ограничение скорости соединения Java на Linux - PullRequest
0 голосов
/ 02 февраля 2012

Я использую Java-сервер на виртуальной машине (linux centos) с 4 ядрами и 4 ГБ памяти с кучей 1 ГБ.Вот что я заметил.

Память стабильна, то есть куча на менее чем 600 Мб ... это мое приложение настраивается и не слишком беспокоится об этом.Просматривая статистику сборщика мусора, я вижу, что среднее время, затрачиваемое gc, составляет менее .06 секунд

Вот проблема, которая у меня есть.

tcp_somaxconn = 1024
tcp_syn_backlog =1024
and tcp_syn_cookies is zero.

Скорость соединения, которую я вижу, составляет не более 230 соединений./ сек выше этого я вижу падение очереди прослушивания.Я проверил, что мое серверное приложение также принимает новые соединения со скоростью 230conn / sec. Поэтому я не уверен, почему я вижу, что очередь прослушивания падает выше 230 соединений / sec. Кроме того, ЦП никогда не выходит за пределы 50%.Оцените любую помощь по этому вопросу.

Кроме того, поведение не меняется, если я включаю syn_cookies ..

1 Ответ

1 голос
/ 02 февраля 2012

Ну, это интересно ... вот несколько советов:

  1. Вы не должны включать syn_cookies. вы хотите отключить их, чтобы ядро ​​не замедляло работу, потому что оно думает, что вы атакованы вы можете убедиться в этом, посмотрев в журнале ядра (dmesg) сообщения типа «возможное переполнение SYN на порту ....», после того, как вы убедитесь, что все работает нормально, вы можете включить его снова.

  2. Это многопоточное приложение? действительно ли оно масштабируется по всем ядрам?

  3. NIO может помочь вам получить лучшие результаты, поскольку он не работает в модели «поток на соединение».

  4. В таких случаях параллельный сборщик мусора может работать лучше.

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