Поведение solaris tcp складывает с относительно высоким RTT и прерывистым трафиком

Это приближает вывод top:

watch 'ps axo pid,user,pri,nice,vsz,rsz,size,s,pcpu,pmem,time,cmd|grep "[p]ython\|PID USER"'
4
задан 24 June 2011 в 00:16
1 ответ

EWOULDBLOCK/EAGAIN означает, что данные не могли быть отправлены сразу же. Нам нужно больше деталей о Вашем коде для понимания этого.

  • Попытайтесь выяснить то, что происходит на стороне отправителя, когда EWOULDBLOCK возвращается. Проверьте на потоки и другие процессы, память/подкачку монитора и использование CPU. Проверьте свои журналы (/var/messages...) для любой аппаратной ошибки.
  • Определите потерю пакетов
  • Запустите программу на другой ОС прежде, чем обвинить стек Solaris TCP или запишите маленькую тестовую программу, которая отправляет 300B/s в удаленный конец (никакая потребность в том, что не были заблокированы сокеты, просто отправьте), проверьте на любую задержку, это изолировало бы сетевую проблему.

Я не разработчик, но я предлагаю, чтобы Вы попытались заменить не блокирующиеся сокеты мультиплексором ввода-вывода: выберите или опросите или/dev/poll и проверка, если сокет готов к записи. Это могло бы изменить поведение Вашей программы к лучшему, или в худшем случае дают Вам больше отладки и подсказок о настоящей проблеме.

На таких больших расстояниях все пакеты, вероятно, используют различные маршруты, идя, хотя другой AS, таким образом, никто не может действительно оценить качество сети. Пакет может занять много времени, чтобы прибыть и быть подтвержденным из-за проблемы где-нибудь глубоко в Интернете (это, вероятно, рядом, хотя, иначе люди сообщили бы об этом и зафиксировали бы его), попытайтесь присоединиться из/в другие местоположения. Если единственный пакет займет много времени, чтобы быть подтвержденным, то окно TCP застрянет, и дальнейшие данные не могут быть обработаны. Можно хотеть попытаться настроить размер окна TCP на более высокое значение.

Дополнительно можно просто выполнить mtr для быстрой проверки качества сети. Выполняйте его несколько раз, поскольку пакеты могут взять различные пути.

Надеюсь, что это помогло, так или иначе:/

1
ответ дан 3 December 2019 в 04:15

Теги

Похожие вопросы