Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » параметры реестра отвечающий за connect

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

ploom

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день, очень мутное название темы, так как не знаю что собственно ищу.
Проблема такая, есть сервер и самописное ПО и есть клиенты (из внутренней локалки), когда сервак обрабатывает запросы клиентов, он проверяет с вышестоящим сервером а потом им отсылает подтверждение - об успешности или нет. Назовет у нас это 6 статус, у нас на серваке он занимает даже для огромной пачки (долю секунду)
 
Пришло время переносить сервак, перенесли на новое железо, всё работает нормально, кроме этого 6 статуса. Теперь на каждом запросе он висит секунд по 20-30. Так как нет больше программиста и перепробовали всё, есть мысли что это какой-то ключ в реестре или еще что. Так как в новом профиле на старом сервере - проблема появилась.
 
Собственно вот лог ошибки может кому поможет:
27/04/20 ; 22:35:52 ; 18:Реульт. запроса Sess=4089322  Res=7 Err=0
27/04/20 ; 22:36:13 ; Ошибка запуска ТСР клиента All_done Error CONNECT TCPCL 10060: WSAETIMEDOUT
 
И программист с удаленки, который хоть как-то это По поддерживает в исходниках нашел эту процедуру:
 
Его комментарий:
тут в основном функции winapi, собственно кларионовского кода то нет.
висит функция s32_connect. s32_connect это алиас на виндовую функцию connect
 
Сама процедура:
cWinSock.TCPCl procedure() ! запустить TCP клиента
RetValue ushort
locAddr ulong
code
RetValue=0
if self.tcpClRun then return(self.tcpCSocket). !Проверить не запущен ли уже
self.tcpCSocket=s32_socket(AF_INET,SOCK32_STREAM,IPPROTO_IP) !Coздать сокет
if self.tcpCSocket=SOCK32_ERROR
Self.ErrMsg = 'Error Get Socket TCPCL ' & self.GetWSErr()
else
self.tcpCC_SA.sin_family=AF_INET
locAddr=INADDR_ANY ! =0
memcpy(address(self.tcpCC_SA)+4,address(locAddr),4) !ТСР любой (пока)
self.tcpCC_SA.sin_port=0 !Порт = 0
!Связать сокет с именем(Sokadddr_in) размер
if s32_bind(self.tcpCSocket,self.tcpCC_SA,size(self.tcpCC_SA))
Self.ErrMsg = 'Error BIND Socket TCPCL ' & self.GetWSErr()
else
self.tcpCS_SA.sin_family=AF_INET !Протокол TCP
locAddr=s32_inet_addr(self.tcpHostIP)!Преобразовать Адрес сервера в сетевой
memcpy(address(self.tcpCS_SA)+4,address(locAddr),4)!Записать в Sokaddr_in
self.tcpCS_SA.sin_port=s32_htons(self.SrvPort) !Преобразовать № порта в сетевой
if s32_connect(self.tcpCSocket,self.tcpCS_SA,size(self.tcpCS_SA)) !Подключить сокет
Self.ErrMsg = 'Error CONNECT TCPCL ' & self.GetWSErr()
else
if WSAAsyncSelect(self.tcpCSocket, self.hWndTCPCl, | !Установть текущее окно обработчиком сообщений
EVENT:SocketAccepted, FD_CLOSE + FD_READ + FD_WRITE)
Self.ErrMsg = 'Error WSAAsyncSelect TCPCL ' & self.GetWSErr()
else
RetValue=self.tcpCSocket
end
end
end
end
if RetValue then self.tcpClRun=1. !Клиент запущен
return(RetValue) ! 0 если ERROR и номер сокета если все ОК
 
Может подкинет кто, с помощью чего (ключа, софта) эту проверку отключили/обошли. Так как если на серваке отключить локалку, сменить на 2 сетевухе ИП - работает мгновенно, при том что адресатов (хостов из локалки не видит), но пишет что всё ОК.
 
Вот для примера с рабочего сервера с вырубленными интерфейсами (ошибок нет):
27/04/20 ; 22:28:42 ; Отправлено All_done 202544220 in222.255.255.110
27/04/20 ; 22:28:42 ; Отправлено All_done 202544222 in222.255.255.110
27/04/20 ; 22:28:42 ; Отправлено All_done 207651161 in222.255.255.105
27/04/20 ; 22:28:42 ; Отправлено All_done 200589660 in221.255.255.112
27/04/20 ; 22:28:42 ; Отправлено All_done 207781852 in192.168.255.35
27/04/20 ; 22:28:42 ; Отправлено All_done 207781854 in192.168.255.35
27/04/20 ; 22:28:42 ; Отправлено All_done 201438348 in221.255.255.207
27/04/20 ; 22:28:42 ; Отправлено All_done 207781882 in192.168.255.35

Всего записей: 51 | Зарегистр. 26-08-2009 | Отправлено: 23:50 27-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ploom
а при чем тут реестр?
 

Цитата:
Так как если на серваке отключить локалку, сменить на 2 сетевухе ИП - работает мгновенно

обычно это говорит о проблеме с таблицей маршрутов, что пакет изначально идет не в тот интерфейс.
вряд ли дело в файерволле.
 

Цитата:
locAddr=s32_inet_addr(self.tcpHostIP)!Преобразовать Адрес сервера в сетевой

определиться к какому IP он пытается сделать запрос и откуда он берет этот адрес.
попробовать самостоятельно телнетом подключиться на нужный порт.
 
покурить https://it.sander.su/routing_table.php

Всего записей: 16872 | Зарегистр. 20-09-2014 | Отправлено: 00:06 28-04-2020 | Исправлено: Mavrikii, 00:07 28-04-2020
ploom

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нет, смотри, я набрал запросов сегодня днем и их задержал. Вот я пришел сейчас на работу в 11, все компы сотрудников - выключены, адресатов нет.
Я отправляю пачку запросов, лог ты видишь - он ответил мгновенно - что всё ок. То есть в действительности получается - он даже это и пытался этого сделать.
 
Беру потом всю базу переношу но новый сервак, с такими же настройками сети. Делаю по одному запросу - умирает. А в логе попытке что-то Ошибка запуска ТСР клиента All_done Error CONNECT TCPCL 10060: WSAETIMEDOUT.
 
Опять же написал, на том же рабочем серваке в только что свеже-созданном профиле проблема так же появилась.
 
PS
добавлю еще 1 строку из лога
27/04/20 ; 22:35:52 ; 18:Реульт. запроса Sess=4089322  Res=7 Err=0
27/04/20 ; 22:36:13 ; Ошибка запуска ТСР клиента All_done Error CONNECT TCPCL 10060: WSAETIMEDOUT
27/04/20 ; 22:36:13 ; Отправлено All_done 201438351 in221.255.255.207
 
Вот он после паузы, так же потом решил что всё ок. В профиле где стоит ПО - как-то этот таймаут или эту проверку отключили.

Всего записей: 51 | Зарегистр. 26-08-2009 | Отправлено: 00:15 28-04-2020 | Исправлено: ploom, 00:21 28-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ploom

Цитата:
А в логе попытке что-то Ошибка запуска ТСР клиента All_done Error CONNECT TCPCL 10060: WSAETIMEDOUT.

сообщение говорит о том, что подключение не удалось, вылетело по таймауту.
то есть программа пыталась подключиться к серверу, но соединение не было установлено.
 

Цитата:
с такими же настройками сети

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

Цитата:
Вот он после паузы, так же потом решил что всё ок

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

Всего записей: 16872 | Зарегистр. 20-09-2014 | Отправлено: 00:18 28-04-2020 | Исправлено: Mavrikii, 00:23 28-04-2020
ploom

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нет, там всё так.
 
1 Сетевуха локалка с инетом
2 Сетевуха (локалка без инета)
3 VPN
 
На рабочий сервере выключал 2-3 (клиенты все только из 2 или 3), а на первой другой IP вводил, он всё равно работает так же - мгновенно.
Лог же есть в первом сообщении, где пачка успешно обработана, она была проввдена при выключенных 2-3 интерфейсах.
 
Тут именно как-то отключили проверку или убрали таймаут, которая во 2 примере вылетает по таймауту.

Всего записей: 51 | Зарегистр. 26-08-2009 | Отправлено: 00:24 28-04-2020 | Исправлено: ploom, 01:04 28-04-2020
ipmanyak



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ploom Качни утилиту  Русиновича Process Monitor  и отследи им куда лезет прога в реестр и еще куда.  
 
https://docs.microsoft.com/ru-ru/sysinternals/downloads/procmon
как пользоваться найдешь в Инете
 
Второй вариант - клонировать старую машину в виртуальную и проверить в ней в VM. Если заработает, то так и оставить. С виртуалками проще мигрировать куда-нить. Если нет у тебя такого комплекса с гипервизором,  то самое простое это  проверить в  Virtualbox - бесплатен.

----------
В сортире лучше быть юзером, чем админом...

Всего записей: 12378 | Зарегистр. 10-12-2003 | Отправлено: 13:14 28-04-2020 | Исправлено: ipmanyak, 13:19 28-04-2020
ploom

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я попробую, проблема в том, что нужны новые протоколы безопасности к вышестоящему поставщику, на старой машинке их невозможно вроде внедрить, так что мигрирование на виртуалку - не поможет.

Всего записей: 51 | Зарегистр. 26-08-2009 | Отправлено: 14:52 28-04-2020
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » параметры реестра отвечающий за connect


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.B0ard 2000-2026

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru