|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Уткъ mayton Кстати задолго до 100500 сетевых коннектов количество портов на 1 ethernet интерфейс резко закончится ... поэтому тут уж или Ишак сдохнет или Султан. Я-бы предложил внести в топик более близкое к задаче число. 100? 1000? ну в райное 100-1000 в итоге думаю и будет. Хорошо. Пускай пессиместично это будет до 1000 соединений с 1 клиента. Но здесь у меня (к моему ужасу) возникает другой вопрос. Как ты будешь их координировать? Нужно-ли сводить их результаты в 1 точку? Просто здесь нужна либо много unix-processes или threads. Беря во внимание что ты только недавно разбирался со строками. Тебе дальше надо разбираться с темой еще более сложной. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 17:12 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
mayton Но здесь у меня (к моему ужасу) возникает другой вопрос. Как ты будешь их координировать? Нужно-ли сводить их результаты в 1 точку? Просто здесь нужна либо много unix-processes или threads. Беря во внимание что ты только недавно разбирался со строками. Тебе дальше надо разбираться с темой еще более сложной. Да и к моему ужасу тоже :-((( ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 17:36 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
maytonТебе дальше надо разбираться с темой еще более сложной. Да, ему предстоит освоить циклы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 18:18 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonТебе дальше надо разбираться с темой еще более сложной. Да, ему предстоит освоить циклы. Циклы вроде были уже тут. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 18:28 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
У тебя есть словесное описание всего алгоритма? Тоесть Без всяких бизнес названий и секретной инфы. Типа. 1) Подконнектится к 1000 баз (в наличии должен быть список столько же хостов-паролей) 2) и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 18:34 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
mayton У тебя есть словесное описание всего алгоритма? Тоесть Без всяких бизнес названий и секретной инфы. Типа. 1) Подконнектится к 1000 баз (в наличии должен быть список столько же хостов-паролей) 2) и т.д. Да, конечно. 1) подключиться к 1 серверу, взять с него список ip (1000+). 2) На эти 1000+ прогрузить табличку около 200 тыс записей, маленькая в общем. 3) На этих 1000+ выполнить простой SQL запрос и собрать результат выполнения в одно место. Подключение проходит нормально, со структорой еще не раборался, чтоы в ней все хранить. Передача char переменных в функци и обратно получилась нормльно, а специфических переменных (PGconn* и PGresult* ) что-то не получилось пока из функции вытащить, только в нее передались. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 18:54 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Уткъ а специфических переменных (PGconn* и PGresult* ) что-то не получилось пока из функции вытащить, только в нее передались. Это указатели, поэтому надо использовать указатели на указатели (PGconn** и PGresult** ) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 19:29 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Уткъ ==> 2) На эти 1000+ прогрузить табличку около 200 тыс записей, маленькая в общем. 3) На этих 1000+ выполнить простой SQL запрос и собрать результат выполнения в одно место. Вот тут есть вопрос. Этот физический хост где ты запускаешь С-приложение должен обладать достаточно хорошим сетевым каналом. Потому-что одновременная отгрузка инфы на много хостов делит трафик пропорционально. Допустим у тебя 100 Мбит. И тогда каждая БД получит канал навроде 100 / 1000 = 0.1 Мбит или 100 Килобит или 12 килобайт в секунду. Это скорость модема. Если ты не хочешь пропорционально (будет например что-то типа Round-Robin) 10 работающих при 980 ожидающих - то это будет более умная схема и более понятная. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 20:10 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
По поводу надёжности. Тут даже в датацентрах где виртуализация и внутрення сетка - всё равно часть хостов отъезжают по разным причинам. Гарантировать-же оркестровку даже 100 хостов офигенски сложно. Постоянно что-то не пингуется. Что-то недоступно. Где-то мигает канал. То есть то нет. Где-то полоса пропускания упала. Вобщем тут еще должно быть до чёрта технологий retry/reconnect. Ведение статусов хостов в отдельной табличке. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 20:15 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
mayton Уткъ ==> 2) На эти 1000+ прогрузить табличку около 200 тыс записей, маленькая в общем. 3) На этих 1000+ выполнить простой SQL запрос и собрать результат выполнения в одно место. Вот тут есть вопрос. Этот физический хост где ты запускаешь С-приложение должен обладать достаточно хорошим сетевым каналом. Потому-что одновременная отгрузка инфы на много хостов делит трафик пропорционально. Допустим у тебя 100 Мбит. И тогда каждая БД получит канал навроде 100 / 1000 = 0.1 Мбит или 100 Килобит или 12 килобайт в секунду. Это скорость модема. Если ты не хочешь пропорционально (будет например что-то типа Round-Robin) 10 работающих при 980 ожидающих - то это будет более умная схема и более понятная. ИМХО тут проще наоборот решать: данные из таблички в архиве кидаешь куда-нибудь в инет, а всем ожидающим ссылку на скачивание. Дальше все качают и заливают каждый в свою БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 20:28 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Уткъ 3) На этих 1000+ выполнить простой SQL запрос и собрать результат выполнения в одно место. Здесь - окей если работает агрегация. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 20:55 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Dima T ИМХО тут проще наоборот решать: данные из таблички в архиве кидаешь куда-нибудь в инет, а всем ожидающим ссылку на скачивание. Дальше все качают и заливают каждый в свою БД. Это при условии что у него единый шаблон обновления для всех баз. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 21:36 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Dima T Уткъ а специфических переменных (PGconn* и PGresult* ) что-то не получилось пока из функции вытащить, только в нее передались. Это указатели, поэтому надо использовать указатели на указатели (PGconn** и PGresult** ) Сделал в объявлении функции: Код: plaintext 1.
А при вызове функции Код: plaintext 1.
При этом в main они объявленны: Код: plaintext 1. 2.
Теперь передаются из функции обратно в main, надеюсь верно сделал. Спасибо! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 22:00 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
mayton Уткъ ==> 2) На эти 1000+ прогрузить табличку около 200 тыс записей, маленькая в общем. 3) На этих 1000+ выполнить простой SQL запрос и собрать результат выполнения в одно место. Вот тут есть вопрос. Этот физический хост где ты запускаешь С-приложение должен обладать достаточно хорошим сетевым каналом. Потому-что одновременная отгрузка инфы на много хостов делит трафик пропорционально. Допустим у тебя 100 Мбит. И тогда каждая БД получит канал навроде 100 / 1000 = 0.1 Мбит или 100 Килобит или 12 килобайт в секунду. Это скорость модема. Если ты не хочешь пропорционально (будет например что-то типа Round-Robin) 10 работающих при 980 ожидающих - то это будет более умная схема и более понятная. Есть такое дело. Тут уже не будет негативного влияния длинных запросов, как если бы это было сделано на psql, поэтому парралельность можно и уменьшать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 22:01 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
mayton По поводу надёжности. Тут даже в датацентрах где виртуализация и внутрення сетка - всё равно часть хостов отъезжают по разным причинам. Гарантировать-же оркестровку даже 100 хостов офигенски сложно. Постоянно что-то не пингуется. Что-то недоступно. Где-то мигает канал. То есть то нет. Где-то полоса пропускания упала. Вобщем тут еще должно быть до чёрта технологий retry/reconnect. Ведение статусов хостов в отдельной табличке. Пока на это можно не образать внимания, главное чтобы 95%-99% хостов были доступны. если недоступен - просто пропускается. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 22:03 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
УткъТут уже не будет негативного влияния длинных запросов, как если бы это было сделано на psql С чего ты это взял? Твоя программа ничем не будет отличаться от десятков параллельно запущенных psql. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 23:08 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
проще осуществить обратную задачу - на серверах по "крону" отдать отчет на центральный сервер ну если только это надо не по "щелчку клерка" ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 23:14 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Кто то переизобретает колесо Заббикс ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 23:19 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
White Owl Уткъ пропущено... Все время забываю проусловность переменных ) Кстати, такая идея пришла: Можно же стуктуру наверное использовать, точнее массив из структуры. Там просто типы не только char*, но и специфичиские библиотечные типа буфера и тп. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
а для нахождения делаешь цикл типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Спасибо! Это похоже на то что надо. Ради теста объявил такую структуру: Код: plaintext 1. 2. 3. 4.
Вот так массив объявил (причем если N даже 0 задать - все равно работает): Код: plaintext 1.
Вот так элементы присваваются: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Причем коннекты в БД создаются успешно. Ну это вообще то что надо!!! Только сильно похоже на первый пост, где я пытался делать так: Код: plaintext 1. 2. 3.
Скажите, так (массив из структур) точно можно массив объявлять, без ссылок на ссылки и т.п. ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 00:25 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
А есть в Postgres аналог DBMS_SCHEDULER или DBMS_JOB ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 00:27 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
mayton А есть в Postgres аналог DBMS_SCHEDULER или DBMS_JOB ? Прямо в голом постгрессе нет. Есть какие-то поделки, я ими не пользовался. крон удобнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 00:36 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Читаю про массивы структур. Это круто. Но меня смущает что там ни где не выделяют и не высвобождают память: https://metanit.com/cpp/c/6.4.php Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Ну и меня насторажило что не выпало ни разу сегментайшн фаулт, с массивом структур. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 00:42 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
То что ты делаешь похоже на координатор распределенных ... толи отчетов толи репликаций. Мне кажется что в топике мы еще не исчерпали всех инженерных возможностей. Cron мне кажется неудобным к использованию. Ну .. пускай админы с девопсами его лупят. Для них - текстовые файлы - это native programming а для нас - нормальный API имеет обычно вид вызова функции из твоего языка разработки. Поэтому к чорту крон. Вот если-бы на всех slave-машинах (я буду эту 1000 штук хостов называть slave) был поднят какой-то Tomcat - тогда другое дело. Можно делать красивые задачи и чтоб сами slaves ходили в центр и получали задачи и исполняли их. Идея Димы - выкладывать на доступ табличку - хорошая. Я ее полностью поддерживаю. Но это в рамках вашей инфраструктуры надо обсуждать. Не в торренты конечно кидать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 00:48 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
mayton То что ты делаешь похоже на координатор распределенных ... толи отчетов толи репликаций. Мне кажется что в топике мы еще не исчерпали всех инженерных возможностей. Cron мне кажется неудобным к использованию. Ну .. пускай админы с девопсами его лупят. Для них - текстовые файлы - это native programming а для нас - нормальный API имеет обычно вид вызова функции из твоего языка разработки. Поэтому к чорту крон. Вот если-бы на всех slave-машинах (я буду эту 1000 штук хостов называть slave) был поднят какой-то Tomcat - тогда другое дело. Можно делать красивые задачи и чтоб сами slaves ходили в центр и получали задачи и исполняли их. Идея Димы - выкладывать на доступ табличку - хорошая. Я ее полностью поддерживаю. Но это в рамках вашей инфраструктуры надо обсуждать. Не в торренты конечно кидать. Да, конечно, в идеале все через веб вызовы. Но на данном этапе выбрано такое архитектурное решение, довольно жесткое, но оно тут оправдано. В общем, попробую сейчас все переписать на массив из структур... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 00:51 |
|
Си. Освободить память 2-мерного сторкового массива
|
|||
---|---|---|---|
#18+
Вот такое объявление годиться? Код: plaintext 1. 2. 3. 4. 5. 6.
char* - это получается ссылка, для хранение строки в структуре это нормально или лучще как-нить так: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2022, 00:55 |
|
|
start [/forum/topic.php?fid=57&msg=40130897&tid=2017122]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 264ms |
total: | 410ms |
0 / 0 |