Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.105.105] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Кто–нибудь сталкивался с проблемой, что сокет–клиент ровно через две минуты не может отправить данные на сервер. При этом не может определить, что коннект разорван (тут я ещё проверю)? Сервер под windows server 2003, клиент – ubuntu
|
Сообщ.
#2
,
|
|
|
А может быть так, что буфер приёма сокета (на серверной стороне) или отправки переполнился?
|
Сообщ.
#3
,
|
|
|
Фиревол хулиганит ?
Можно попытаться посмотреть сниффером на пакеты обмена. |
Сообщ.
#4
,
|
|
|
Цитата Flex Ferrum @ А может быть так, что буфер приёма сокета (на серверной стороне) или отправки переполнился? Вряд ли. Тогда бы зависело от количества отправленных данных. А здесь - ровно 2 минуты. Когда send() возвращает количество меньшее, чем требовалось, я делаю poll() c POLLOUT. Никаких ошибок не возвращается. Я уже сталкивался с такой проблемой, при работе с freetds. Там тоже коннект подыхал ровно через 2 минуты. Тогда я на это забил (убивал коннект через полторы минуты). А потом как-то само-собой рассосалось, перестало повторяться, так и не понял что было. Цитата ЫукпШ @ Фиревол хулиганит ? Админы уверяют, что нет там никакого фаервола. Я им, конечно, не верю, но это две виртуальные машины в одном ЦОДе. |
Сообщ.
#5
,
|
|
|
Подозреваю что на стороне сервера стоит автозакрытие сокета, по типу такого
sock_fd = Socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP); close_time = 120; Setsockopt(sock_fd, IPPROTO_SCTP, SCTP_AUTOCLOSE, &close_time, sizeof(close_time)); |
Сообщ.
#6
,
|
|
|
Цитата A.I. @ Подозреваю что на стороне сервера стоит автозакрытие сокета, по типу такого Такого кода там точно нет, сервер тоже мой. Да и в этом случае, думаю, клиент бы увидел, что сокет закрыт. А так - просто зависает и всё. Не может ничего отправить и не получает ошибки. |
Сообщ.
#7
,
|
|
|
1) Клиент теряет связь только на одном компе или на других тоже?
2) Есть возможность вытащить с серверного приложения какую-нибудь отладочную инфу? 3) А если телнетом вместо клиентского приложения подцепиться, тоже через 2 минуты обрыв? 4) Обрыв через 2 минуты простоя или тупо обрыв? |
Сообщ.
#8
,
|
|
|
А может просто протестировать каким-то другим софтом и тогда вероятно вопросы появятся к админам.
|
Сообщ.
#9
,
|
|
|
Цитата A.I. @ ) Клиент теряет связь только на одном компе или на других тоже? Код работает везде одинаковый. Повторил только на этой паре. На других проверить тяжеловато, т.к. сервера боевые, но всё работает. Цитата A.I. @ 2) Есть возможность вытащить с серверного приложения какую-нибудь отладочную инфу? Знать бы какую Цитата A.I. @ 3) А если телнетом вместо клиентского приложения подцепиться, тоже через 2 минуты обрыв? Телнет вроде не зависает. Но там непонятно, нормальные данные не отправишь Цитата A.I. @ 4) Обрыв через 2 минуты простоя или тупо обрыв? Ровно через 2 минуты send начинает возвращать 0, ошибок нет. Постоянно начитываю этот сокет, т.е. разрыв коннекта должен по-любому определится. |
Сообщ.
#10
,
|
|
|
При запуске проги на другом линуксовом сервере, точно таком-же (во всяком случае, должен быть), не повторяется
Добавлено admin@trading:/proc/sys/net/ipv4$ netstat -an | awk '/tcp/ {print $6}' | sort | uniq -c 117 ESTABLISHED 6 LISTEN 5955 TIME_WAIT TIME_WAIT - растёт |
Сообщ.
#11
,
|
|
|
Кстати, а ты wireshark'ом не хочешь свои коннекты помониторить? Как дополнительное средство диагностики, так сказать.
|
Сообщ.
#12
,
|
|
|
# cat /proc/sys/net/ipv4/tcp_keepalive_time
# cat /proc/sys/net/ipv4/tcp_keepalive_intvl # cat /proc/sys/net/ipv4/tcp_keepalive_probes что выставлено? Добавлено Цитата Flex Ferrum @ Кстати, а ты wireshark'ом не хочешь свои коннекты помониторить? кстати да, было бы любопытно дампы глянуть |
Сообщ.
#13
,
|
|
|
Смотрим через tcpdump. Через 2 минуты перестают приходить ответы от сервера. Вот этот момент
13:56:17.881906 IP 10.177.140.25.11250 > ntcpptest.39218: Flags [.], ack 1106507, win 64240, options [nop,nop,TS val 179205 ecr 243281], length 0 13:56:17.881913 IP ntcpptest.39218 > 10.177.140.25.11250: Flags [P.], seq 1106507:1106598, ack 1, win 229, options [nop,nop,TS val 243313 ecr 179205], length 91 13:56:18.081004 IP 10.177.140.25.11250 > ntcpptest.39218: Flags [.], ack 1106598, win 64149, options [nop,nop,TS val 179207 ecr 243313], length 0 13:56:18.081017 IP ntcpptest.39218 > 10.177.140.25.11250: Flags [P.], seq 1106598:1107180, ack 1, win 229, options [nop,nop,TS val 243363 ecr 179207], length 582 13:56:18.299888 IP 10.177.140.25.11250 > ntcpptest.39218: Flags [.], ack 1107180, win 63567, options [nop,nop,TS val 179209 ecr 243363], length 0 13:56:18.299896 IP ntcpptest.39218 > 10.177.140.25.11250: Flags [P.], seq 1107180:1108372, ack 1, win 229, options [nop,nop,TS val 243417 ecr 179209], length 1192 13:56:18.434448 IP ntcpptest.39218 > 10.177.140.25.11250: Flags [.], seq 1108372:1109820, ack 1, win 229, options [nop,nop,TS val 243451 ecr 179209], length 1448 13:56:18.635510 IP ntcpptest.39218 > 10.177.140.25.11250: Flags [.], seq 1109820:1111268, ack 1, win 229, options [nop,nop,TS val 243501 ecr 179209], length 1448 13:56:18.680848 IP ntcpptest.39218 > 10.177.140.25.11250: Flags [P.], seq 1107180:1108372, ack 1, win 229, options [nop,nop,TS val 243513 ecr 179209], length 1192 Добавлено admin@trading:~/NetTrader/log$ sudo cat /proc/sys/net/ipv4/tcp_keepalive_probes 9 admin@trading:~/NetTrader/log$ sudo cat /proc/sys/net/ipv4/tcp_keepalive_intvl 75 admin@trading:~/NetTrader/log$ sudo cat /proc/sys/net/ipv4/tcp_keepalive_time 7200 |
Сообщ.
#14
,
|
|
|
Установил на сервере wireshark, не без труда - windows 2003 уже никто не хочет поддерживать.
Там через 2 минуты тупо перестаёт приходить что-либо. Вообще не знаю что делать. |
Сообщ.
#15
,
|
|
|
Олег М, на стороне сервера есть возможность что-то поставить?
|