Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3

Теория создания Indy сервера - вопрос оптимальности и производительности

08.09.2014, 14:31. Показов 1965. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для общего развития и понимания хотелось бы разъяснить несколько вопросов по поводу создания сервера.
Если предположить что есть сервер, основанный на компонентах Indy и работающий с базой MySql, а так же 200-300 подключений к нему одновременно (пускай посылающих раз в секунду не большой объем данных, 10-15 символов)…

то вот такой вопрос.. как в таких случаях луче поступить с производительностью, не пихать же для каждого клиента отдельный поток…да и вообще прошу совета тех кто уже прибывал себя в данных задачах, на что надо обращать внимание.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.09.2014, 14:31
Ответы с готовыми решениями:

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

Отрисовка графика по значениям из БД. Вопрос оптимальности
Здраствуйте, посетители форума) Попрошу совета. У меня задача, отрисовывать график реал-тайм. Проблема в том, что данных на этот график...

Сборка игрового компьютера за 50+ к - вопрос оптимальности и совместимости
Привет всем, решил собрать компьютер (так ведь действительно дешевле и лучше), поэтому нужна ваша помощь. Живу я в Московской области,...

17
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.09.2014, 14:21
Книга "Глубины Indy" Перевод: А.П. Подгорецкий

Как я помню вроде как Indy- cервера сами создают потоки для каждого подключения, но там не уверен -вполне может быть они не создаются, а берутся из пула.

А есть ли необходимость в промежуточном сервере? Как бы MySql сама по себе сервер?
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
09.09.2014, 14:48  [ТС]
Через Indy хотелось сделать алгоритмы защиты и шифрации трафика.

Avazart я изначально натолкнулся на эту книгу с переводом..но там так абстрактно написано, вот пример законченной фразы описания
C
1
 "Большинство сокет компонент вместо изоляции от стека, наоборот погружают его в сложности создания оберток вокруг этого в Delphi / C++ Builder"
..вообще тут не чего не понял
На счет потоков,так же не понятно то ли создает, то ли нет.
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
15.09.2014, 12:02
Позволю себе задать вопрос в этой теме, дабы не плодить топики.
У меня есть готовые сервер и клиент, написанные с использованием Indy
Я решил переписать сервер, без Indy, и вообще допустим на С#.
Не хватает знаний о "глубинах" инди.

Получится ли у меня переписать сервер, чтоб к нему могли цепляться прежние клиенты?

Пока что запрос от клиентов получить удается, но вот скормить клиенту ответ никак.
Сниффером посмотрел ответы родного сервера. Помимо открытого поля Data, остальное там для меня темный лес. Если же кидаю в ответ свои пакеты с таким же Data, то клиент не реагирует, да и родные пакеты по размеру больше моих, чую там доп. информация с шифрованием и т.д...

Есть какие-нибудь мысли или советы?

p.s. лезть в исходники самих компонентов Indy пока не решаюсь.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.09.2014, 13:10
Цитата Сообщение от AntonChik Посмотреть сообщение
p.s. лезть в исходники самих компонентов Indy пока не решаюсь.
Единственный путь как по мне.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
05.10.2015, 18:14  [ТС]
Прошло немного времени, и опытным путем выяснил, что Indy сервер не создает поток под каждое соединение (он создает пул внутренних адресов с запасом, какой в этом плюс для производительности, кроме как при следующем подключении не выделять под него память, не понятно).

PS. На разных форумах, как бы гуру Indy уверяют что все что попадает в события чтения компонента, выполняется в отдельном потоке...не понятно чем это подкреплено или с чего так они считают .
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.10.2015, 20:13
Не пул адресов, а пул потоков.

Цитата Сообщение от Dinkin Посмотреть сообщение
выполняется в отдельном потоке...не понятно чем это подкреплено или с чего так они считают .
Indy In Depth указанная выше...

Цитата Сообщение от Dinkin Посмотреть сообщение
что Indy сервер не создает поток под каждое соединение
Используется поток из пула, но один поток может обслуживать несколько соединений.
Это все зависит от политики. Как реально там нужно смотреть в исходники.
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
05.10.2015, 20:27  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Используется поток из пула, но один поток может обслуживать несколько соединени
может быть, так как я тестировал на 5 соединениях, ив се они были обработаны линейно.
Avazart, если не затруднит, то Вы бы как поступили(какими инструментами или логикой),если была бы необходимость написать сервер для работы с БД, который обслуживал бы сразу несколько клиентов?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.10.2015, 20:30
Цитата Сообщение от Dinkin Посмотреть сообщение
ив се они были обработаны линейно.
Что значит линейно? Кто сказал гадалка?
Что мешает следить за потоками?

Добавлено через 1 минуту
Цитата Сообщение от Dinkin Посмотреть сообщение
Avazart, если не затруднит, то Вы бы как поступили(какими инструментами или логикой),если была бы необходимость написать сервер для работы с БД, который обслуживал бы сразу несколько клиентов?
Хз, не знаю слишком сложный вопрос. Вероятно стоило бы почитать какие нибудть книжки по теории и по возможным архитектурам серверов.
И скорее всего бы отказался от билдера в качестве серверного решения
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
05.10.2015, 20:36  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Что значит линейно? Кто сказал гадалка?
не не гадалка, я)

С 5 клиентов сделал один запрос на вычисление функции на сервере, на сервере отображал в TMemo начало и завершение каждого вычисления.....каждое вычисление начиналось только после того когда завершиться предыдущий,не раньше.

Да и как бы странным не находите, что программа с Indy замирает на момент вычисления. Откуда замирание если все в потоках?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.10.2015, 21:00
Цитата Сообщение от Dinkin Посмотреть сообщение
С 5 клиентов сделал один запрос на вычисление функции на сервере, на сервере отображал в TMemo начало и завершение каждого вычисления.....каждое вычисление начиналось только после того когда завершиться предыдущий,не раньше.
Мм а что тяжело было для начал просто повыводить GetCurrentThreadId() ?

Добавлено через 1 минуту
Цитата Сообщение от Dinkin Посмотреть сообщение
Откуда замирание если все в потоках?
Вероятно от ту да же откуда кривые руки?
Откуда мне знать что вы туда позапихивали что у вас виснит?
И может у вас вообще комп одноядерный или вы пишите на допотопной Indy9?
1
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
05.10.2015, 21:36
Ну если с БД работаете, чем SQL не годен ? Или вы свою СУБД пишите ?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
05.10.2015, 21:43  [ТС]
Почтальон, Вы бы рискнули в общий доступ показывать БД SQL, без дополнительной защиты?....мне вот страшно (естественно если даже включены внутренние средства защиты))
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
05.10.2015, 22:17
Вы же все-равно клиент будете писать под БД, не вижу ничего страшного, а свою СУБД писать - это жееесть
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
05.10.2015, 22:28  [ТС]
Почтальон, Просто насмотришься как подменяют пакеты или что то еще и получают все данные из БД, (а так хоть плюс доп защита) =)
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
06.10.2015, 09:11
У вас настолько секретная инфа что ее вообще никому знать не нужно ? Тогда шифрование канала делайте, VPN поднимайте и т.п. Просто еще раз повторюсь, писать свою СУБД выйдет дороже как материально, так и по времени
А по поводу перехвата пакетов - от этого никто не застрахован
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.10.2015, 11:27
Цитата Сообщение от Dinkin Посмотреть сообщение
Почтальон, Просто насмотришься как подменяют пакеты или что то еще и получают все данные из БД, (а так хоть плюс доп защита) =)
Зато возникает друга проблема, что кому нужно может инфу и не украдет, а зато сервер положит.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
07.10.2015, 19:15  [ТС]
Приношу извинения за дезинформацию..дело было как и в версии Indy, так в методе тестирования. Как и заявлено, инди работает в потоках, что не может не радовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2015, 19:15
Помогаю со студенческими работами здесь

Передача данных между клиентами: вопрос скорости и оптимальности
у меня есть сайт, с mysql базой, доступ по FTP и всё такое. как лучше и как будут быстрее передаваться данные между клиентами? вот думаю...

Вопрос по Indy
вот такая проблема - IdFTP на некоторый серверах видит файлы и папки, а на некоторых нет с помошью IdFTP1->List(sList,sTypeF,true); и...

Вопрос по TIdCmdTCPServer (Indy 10)
Доброго времени суток, форумчане. "Изобретаю" свой пользовательский протокол удалённого администрирования. Зачем и для чего - чейчас не...

Вопрос о производительности VS
Здравствуйте, вопрос ламерский, слабонервных просьба не читать. У меня ноут Acer > Intel Celeron M (2 ГГц), 1Гб ОЗУ, Windows 7....

Вопрос по производительности компа
У меня Тип компьютера Однопроцессорный компьютер с ACPI , Операционная система Microsoft Windows XP Home Edition Тип ЦП Intel Celeron D...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru