Назад | Перейти на главную страницу

мониторинг производительности TCP / IP в Solaris

Я пытаюсь настроить систему с высоким трафиком сообщений, работающую на Solaris. Архитектура представляет собой большое количество (600) клиентов, которые подключаются через TCP к большому серверу Solaris, а затем отправляют / получают относительно небольшие сообщения (полезная нагрузка от 0,5 до 1 КБ) с высокой скоростью. Цель состоит в том, чтобы минимизировать задержку каждого обрабатываемого сообщения. Я подозреваю, что стек TCP сервера перегружен всем трафиком. Какие команды / показатели я могу использовать, чтобы подтвердить это, и если это правда, как лучше всего устранить это узкое место?

snoop(1m) и dtrace(1m) вероятно будут твоими лучшими друзьями. Первый для отслеживания и синхронизации трафика, второй для измерения внутренней задержки сервера.

Если общий размер сообщения <1 КБ, вы можете значительно снизить нагрузку на сеть, используя UDP вместо TCP. Отправка короткого сообщения через TCP влечет за собой накладные расходы на каждом конце, настраивая информацию о сеансе / соединении, трехстороннее рукопожатие для начала и подключение к концу в сети.

Используя UDP, вы отправляете один пакет со своим сообщением и полагаетесь на сеть «изо всех сил». Вы, вероятно, захотите закодировать клиент с некоторым тайм-аутом и повторить передачу в случае потери пакета, но если ваша транзакция и ответ находятся ниже MTU, вы можете обойтись менее чем с четвертью фактических пакетов.