LINUX.ORG.RU
ФорумAdmin

Netstat Recv-Q

 


0

1

Есть прога на сервере, которая шлет по UDP данные и которые не приходят на удаленную машину. Не могу понять в чем затык, в форуме говорят, чтобы открыл все UDP порты, но на убунте фаервол вообще выключен. Может ли увеличение параметра Recv-Q в статистике быть причиной?

Recv-Q - Счётчик байт не скопированных программой пользователя из этого сокета
Send-Q - Счётчик байтов, не подтверждённых удалённым узлом

Это распечатка сразу после соединения удаленной машины и сразу идет увеличение Recv-Q

sudo netstat -npl4 | grep kure
Proto Recv-Q Send-Q Local Address           Foreign Address
udp     4480      0 192.168.33.4:58021    0.0.0.0:*                           
udp        0      0 192.168.33.4:58635    0.0.0.0:*                          
udp        0      0 192.168.33.4:54883    0.0.0.0:*                          
udp     8960      0 192.168.33.4:42902    0.0.0.0:*                          

★★★★

«Счётчик байт не скопированных программой пользователя из этого сокета»

что это означает? В программе на сервере дело или на удаленной машине?

gobot ★★★★
() автор топика
Последнее исправление: gobot (всего исправлений: 1)
Ответ на: комментарий от gobot

это данные которые приняты хостом и ожидающие обработки программой, т.ч. на 90% дело в программе.

Возможно, ситуация такая: процесс приостановлен во время выполнения syscall, а в это время пришли данные.

ps -eo pid,fname,s,wchan или strace на «задумавшийся» процесс может помочь определить чего он ждет.

В принципе это может быть баг в программе, когда она перестает читать приходящие данные.

vel ★★★★★
()
Ответ на: комментарий от vel
sudo strace kurento-media-server

write(3, "\1\0\0\0\0\0\0\0", 8)         = 8
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 945) = 1 ([{fd=3, revents=POLLIN}])
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 945) = 1 ([{fd=3, revents=POLLIN}])
read(3, "\2\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 944) = 1 ([{fd=10, revents=POLLIN}])
read(3, 0x7ffc97704440, 16)             = -1 EAGAIN (Resource temporarily unavailable)
write(3, "\1\0\0\0\0\0\0\0", 8)         = 8
read(10, "W", 1)                        = 1
write(3, "\1\0\0\0\0\0\0\0", 8)         = 8
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 151) = 1 ([{fd=3, revents=POLLIN}])
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 150) = 1 ([{fd=3, revents=POLLIN}])
read(3, "\2\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 150) = 0 (Timeout)
read(3, 0x7ffc97704440, 16)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 5801) = 1 ([{fd=10, revents=POLLIN}])
write(3, "\1\0\0\0\0\0\0\0", 8)         = 8
read(10, "W", 1)                        = 1
write(3, "\1\0\0\0\0\0\0\0", 8)         = 8
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 1187) = 1 ([{fd=3, revents=POLLIN}])
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 1187) = 1 ([{fd=3, revents=POLLIN}])
read(3, "\2\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 1187) = 0 (Timeout)
read(3, 0x7ffc97704440, 16)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 11) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 18) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 2) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 530) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 1) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 6) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 2) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 1) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 1) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 0) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 1) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 8) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}], 2, 0) = 0 (Timeout)



Что тут можно расшифровать? Вижу «Resource temporarily unavailable» и «Timeout»

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Нет...не в этих сообщениях дело, потому что на рабочей машине тоже есть такие сообщения

gobot ★★★★
() автор топика
Ответ на: комментарий от anonymous

На сервере, клиент - винда

gobot ★★★★
() автор топика
Ответ на: комментарий от anonymous

Установил все тоже самое(ubuntu, kurento-media-server с тем же конфигом) в VirtualBox - там все работает

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

прога то — самопал что ли? strace нужен в тот момент, когда счетчик растет, а в том что ты привел криминала нет, хотя и странный алгоритм

anonymous
()
Ответ на: комментарий от vel

Нет, порты от 38000 начинаются там.
Я сделал упрощенный тест:

Ubuntu A(VirtualBox) - на этой машине трафик передается и принимается

Client UDP(60002) -> Server UDP(35403) передано 21 мб. 
Server UDP(35403) -> Client UDP(60002) передано 45 мб.(+статистика)


Ubuntu B(физический выделенный сервер в интернете) - на этой машине трафик принимается от клиента, но не передается(очень мало)
Client UDP(55575) -> Server UDP(54179) передано 42 мб. 
Server UDP(54179) -> Client UDP(55575) передано 390 кб.


Скрин SocketSniff
http://prntscr.com/bn0ckm

Посмотрел снифером передачу от сервера B, там пакеты идут, но очень мало
В основном это какие то
RELOAD Frame ACK
Скрин: http://prntscr.com/bn0bj9

То есть на порт клиента 55575 данные плохо идут, а на сервер нормально

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

А по умолчанию в vbox 1vcpu - возможный вариант что на реальном железе ты наблюдаешь самый распространённый баг многопоточности, забыл как он правильно называется, старею что ли :)

Что-то типа взаимоблокировки потоков , блин надо витамины попить что ли.

Попробуй дать vbox 2 vcpu.

А сможешь на выделенном серваке запустить это тоже в vbox? Может это какой баг с сеткой у того сервака или провайдера?

anonymous
()
Ответ на: комментарий от anonymous

Да, оно... но помимо его, должен ещё видео трафик быть, а его нет...

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Значит проблема где-то на том выделенном серваке.

Смотри отладчиком на чем он затыкается. DTrace в убунту есть? Офигительная штука.

anonymous
()
Ответ на: комментарий от anonymous

Неа нету, но есть какие то пакеты этой проги -dev и -dbg не знаю может их установить

gobot ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.