Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 13 раз(а), последний 2022-09-20 00:15:39 |
|||
карма: 0 |
|
Ответов: 655
Рейтинг: 18
|
|||
Netspirit Привет! Прошла мучительная неделя ожидания удалось внести правки?
|
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Не так быстро. У меня сейчас нет ни капли свободного времени, так что пока не смотрел. Там нужны часы вдумчивой расстановки дебагов и прогонов. Как только дойдут руки - сделаю.
|
|||
карма: 26 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Gunnman, протестируй это: tcpclientserver 2016-04-24 error fix test.rar
|
|||
карма: 26 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 13 раз(а), последний 2022-09-20 00:13:58 |
|||
карма: 0 |
|
Ответов: 655
Рейтинг: 18
|
|||
Netspirit, Выше я, с датой регистрации 1970 год глюк.
В общем потестировал, kernel32.dll больше не ругается, но runtime при закрытии схемы 1 раз словил, поковыряю схему. Спасибо!!! Думаю в шапке можно заменять на текущую версию. |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Обновил в первом посте компоненты. Исправлены некоторые ошибки.
У кого уже были установлены - достаточно заменить NSThreads.pas, TCPClientServer.pas Gunnman, обновись тоже и попробуй. Там были дополнительные изменения. |
|||
карма: 26 |
| ||
Голосовали: | Gunnman, Konst |
Ответов: 655
Рейтинг: 18
|
|||
Netspirit, Я в отъездах был, сейчас скачаю соберу схемку и запущу на 2х серверах, о результатах доложу на след неделе..надо чтобы подольше потестировалось.
|
|||
карма: 0 |
|
Ответов: 655
Рейтинг: 18
|
|||
Netspirit, привет. Служба, в ней 10 TCP клиентов, подключаются на 127.0.0.1:9090 (обычное приложение), после подключения через разное время (обычно в течении часа-двух) служба вываливается.
В события вижу такое: Код исключения: 0xc0000005 Смещение ошибки: 0x00001fb8 Идентификатор сбойного процесса: 0xf18 Время запуска сбойного приложения: 0x01d1d2de6257cf11 Путь сбойного приложения: c:\trm\trmctrl.exe Путь сбойного модуля: c:\trm\trmctrl.exe Ошибка все время одинаковая. Служба ни чего не делает, просто подключается к серверу и все. Ни одно лишнего компонента, мультик, TCP клиент. Сервер то же ни чего не делает, принимает подключения и все. ------------ Дoбавленo в 18.19: 0xc0000005 вроде как access violation, если делаю приложение а не службу, то просто "Project1.exe завершил работу" ------------ Дoбавленo в 18.33: FD_SETSIZE = 1 стоит, у TCP клиентов асинхронный тип подключения. п.с. если 1 TCP клиент в схеме, то все ок, работает сутками. ------------ Дoбавленo в 18.34: Иногда в журнале ошибка kernelbase.dll ------------ Дoбавленo в 21.43: Баг был после подвисания драйвера сетевой карты о_О. Перезагрузка компа, 3 часа служба работает, тестирую. Сорри что поднял панику.. |
|||
карма: 0 |
|
Ответов: 655
Рейтинг: 18
|
|||
Netspirit, правильно ли я понимаю что при FD_SETSIZE=1 события выдаваемые TCPServer происходят от 1 потока?
Возможно криво выразился, я имею ввиду подключается клиент №1, события onConnect,onReceive,onDisconnect данного клиента - это один поток, а такие же события клиент №2 это другой поток? Или же все события происходят в одном потоке просто выдаются поочередно по принципу "кто первый того и тапки"? |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Gunnman писал(а): происходят от 1 потока?Gunnman писал(а): просто выдаются поочередноМаксимум, можно вызывать, например, onReceive одного подключения и onConnect/onDisconnect/onSend других подключений. Но это, во-первых, вынуждает избавиться от общих точек, таких как CurClientID (выдавать все нужные данные в MT-потоке), во-вторых, требует обязательной установки критических секций на выходе из этих событий при доступе к общим участкам схемы (очень скрупулёзного построения схемы). Выигрыш от этого незначительный (только некоторые части схемы получат параллельную обработку, а некоторые так и останутся последовательными, плюс, увеличится сложность разработки схемы). |
|||
карма: 26 |
|
Ответов: 655
Рейтинг: 18
|
|||
Приветствую!
Netspirit, подскажите по такому вопросу, есть схема в ней 2 TCPServerEx, схема работает пару минут и appcrash, av ntdll, если в схему добавить ваш сервер и непременно его запустить (иначе фокус не удастся) то схема работает сутками. Я понимаю что вы не разработчик Ex сервера, но может есть какие-то идеи? П. С. Ex сервер приходится использовать т.к. у самого ни разу не получилось собрать аналогичную схему на базе вашего компонента и мультика. П. П. С. 2 ex сервера в одной схеме - 2 потока, два ваших - 3. Еx сервера использую один поток не смотря на их кол-во в схеме? |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Gunnman писал(а): Я понимаю что вы не разработчик Ex сервера, но может есть какие-то идеи?Gunnman писал(а): Еx сервера использую один поток не смотря на их кол-во в схеме?А вот для приёма данных от текущих соединений уже были предприняты меры по уменьшению количества потоков (и увеличения количества возможных соединений). Все серверы и клиенты в схеме пользуются одним и тем же набором потоков, и по-умолчанию один поток обслуживает 64 соединения (можно заметить по появлению нового потока при подключении 65-го клиента). Gunnman писал(а): то схема работает сутками |
|||
карма: 26 |
|
Ответов: 655
Рейтинг: 18
|
|||
Netspirit, привет!
Вылетает вот такая схема сразу при нажатии на кнопку либо в течении 10-20 минут.
--- Добавлено в 2017-03-07 04:53:18 Мне требуется параллельно проверять 50 сетевых датчиков и отлавливать дисконнекты (мало вероятно конечно, что провода оборвут, но все же проверка на всякий случай нужна). Как правильно использовать AsyncConnect? Редактировалось 1 раз(а), последний 2017-03-07 04:53:18 |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Gunnman писал(а): Как правильно использовать AsyncConnect?У тебя, вроде, правильно стоит поток в каждом мультике, только поставить AsyncConnect=False. Ещё поставил AutoReceive=False, чтобы зря каждый раз не создавало поток чтения данных.
Редактировалось 1 раз(а), последний 2017-03-07 12:50:22 |
|||
карма: 26 |
|