Конференция "Прочее" » многопоточность с Telnet
 
  • aka © (27.10.17 12:28) [0]
    Помогите с общей организацией логики написания приложения.
    У меня есть Win-сервер с которого я могу заходить через Telnet на 98 различных IP адресов на каждом IP устройства есть 64 порта, по каждому из которых нужно снять показания и записать в БД, т.е. 98х64=6272 порта.  Получить ответ от порта и распарсить его в серднем 1-3 сек времени. Желательно снимать показания со всех портов хотя бы раз в 30 мин. но чем чаще тем лучше. Много поточные приложения никогда по роду деятельности писать не приходилось. Поэтому по выше изложенному два вопроса:
    1) Удастся ли вложиться во временные рамки и снять показания со всех портов < 30мин (6272 порта). При много поточной организации приложения.
    2) Как оно будет писаться в одну таблицу БД из разных потоков, проблем не будет?
  • Pavia © (27.10.17 13:55) [1]
    1) 100 потоков Компьютер держит в лёгкую. Больше негативно скажется на производительности. 62722/100*3=3 минуты.
    2) А чё вы у нас спрашиваете это мы у вас должны спрашивать. Смотрите документацию на БД. Если про потоко-безопасность ничего не сказано, то просто сами сделайте синхронизацию потоков.
  • DayGaykin © (27.10.17 14:16) [2]
    С помощью функции select ( https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms740141(v=vs.85).aspx ) можно в одном потоке все сделать. Если разберешься, конечно.
  • aka © (27.10.17 14:32) [3]

    > 1) 100 потоков Компьютер держит в лёгкую. Больше негативно
    > скажется на производительности. 62722/100*3=3 минуты.

    Я думал это сильно много. Выйду на работу в понедельник буду ставить эксперементы
  • Eraser © (27.10.17 15:00) [4]
    Для современных компьютеров даже 1000 потоков это не цифра. Только приложение желательно 64 битное делать, но может подойдет 32 битное, это от задач зависит.
  • tesseract © (27.10.17 18:01) [5]
    >>2) Как оно будет писаться в одну таблицу БД из разных потоков, проблем не будет?

    Запись в бд двух значений - микросекунд 20.
    Проблема в лаге ответа телнета - находим нормально работающую либу для tcp, шлем текст и получаем ответ. Можно распараллелить на пул потоков хоть до 1000.  

    1) 100 потоков Компьютер держит в лёгкую

    Это с выделением памяти?  Если считать, что по минимуму поток кушает 64 кб - то даже с малинки получим больше потоков, чем 100. В винде есть "нити" которых можно стартовать намного  больше.
  • Игорь Шевченко © (28.10.17 10:09) [6]
    tesseract ©   (27.10.17 18:01) [5]


    > Если считать, что по минимуму поток кушает 64 кб


    https://blogs.technet.microsoft.com/markrussinovich/2009/07/05/pushing-the-limits-of-windows-processes-and-threads/

    Читаем.


    > то даже с малинки получим больше потоков, чем 100


    Давно на ней Windows ?
  • tesseract © (28.10.17 16:32) [7]
    >>Читаем.

    Спасибо.

    >>Давно на ней Windows ?

    Больше двух лет.

    https://www.microsoft.com/en-us/download/details.aspx?id=53360
  • aka © (30.10.17 23:00) [8]
    Завтра выделят ПК для этих целей.
    Возник еще небольшой подвопросик.
    Показания буду снимать с "железяки" и писать в БД (наверное MySQL). Для связи с "железякой" нужно прописывать сетевую карту по особому, совсем отлично от других ПК локальной сети. Но информация может понадобится и в локалке, вторая сетевая спасет?
  • tesseract © (30.10.17 23:10) [9]
    >>Показания буду снимать с "железяки" и писать в БД (наверное MySQL).

    Для тупо логов лучше подойдёт SQLite.

    >>Для связи с "железякой" нужно прописывать сетевую карту по особому, совсем отлично от других ПК локальной сети.

    Во vlan другой или просто маска подсети другая? Вообще проще всего настроить две сетевые карты без роутинга между ними.
  • aka © (30.10.17 23:17) [10]

    > vlan другой
  • tesseract © (30.10.17 23:21) [11]
    Тогда две сетевухи.
  • DayGaykin © (31.10.17 02:08) [12]
    Мне бы такие задачи :) халява)
  • tesseract © (31.10.17 10:02) [13]
    >>Мне бы такие задачи :) халява)

    На Go можно за пару часов через coroutine накатать :-)
  • aka © (08.11.17 15:57) [14]
    Все сделал, теперь только правильно осталось прописать маршруты. Все приходится познавать в процессе (

    на одной сетевой выход на оборудование через модем:
    IP 192.168.1.17
    Mask 255.255.255.0
    Gateway 192.168.1.1  

    вторая локалка:
    IP 10.15.150.70
    Mask 255.255.255.0
    Gateway 10.15.150.1

    С этого компьютера пингуется все. Но из локалки адрес 10.15.150.70 никто не пингует пока не выключу первую сетевую.

    Как правильно прописаться?
  • DayGaykin © (08.11.17 16:18) [15]
    Напиши все конкретно.

    С машины с каким IP адресом не пингуется твоя 10.15.150.70.
    Мне почему-то кажется не с 10.15.150.x, и поэтому pong улетает на маршрут по-умолчанию 192.168.1.1.

    Ну и сразу route print напиши.
  • aka © (08.11.17 16:22) [16]

    > С машины с каким IP адресом не пингуется твоя 10.15.150.
    > 70.

    с, к примеру, 10.15.150.78. А я его пингую
    > Ну и сразу route print напиши.

    обнулил все
    route -f
    ipconfig /renew
  • DayGaykin © (08.11.17 16:27) [17]
    Ну и какой у тебя теперь route print ?
  • aka © (08.11.17 16:38) [18]
    C:\Documents and Settings\Администратор>route print
    ===========================================================================
    Список интерфейсов
    0x1 ........................... MS TCP Loopback interface
    0x80002 ...00 1d 7d 36 96 0e ...... Realtek RTL8169/8110 Family Gigabit Ethernet
    NIC - ╠шэшяюЁЄ яырэшЁют∙шър яръхЄют
    0x80003 ...00 00 21 e4 c5 c5 ...... Realtek RTL8029(AS) PCI Ethernet рфряЄхЁ - ╠
    шэшяюЁЄ яырэшЁют∙шър яръхЄют
    ===========================================================================
    ===========================================================================
    Активные маршруты:
    Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
             0.0.0.0          0.0.0.0      10.15.168.1    10.15.168.53       30
             0.0.0.0          0.0.0.0      192.168.1.1     192.168.1.2       20
         10.15.168.0    255.255.255.0     10.15.168.53    10.15.168.53       30
        10.15.168.53  255.255.255.255        127.0.0.1       127.0.0.1       30
      10.255.255.255  255.255.255.255     10.15.168.53    10.15.168.53       30
           127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
         192.168.1.0    255.255.255.0      192.168.1.2     192.168.1.2       20
         192.168.1.2  255.255.255.255        127.0.0.1       127.0.0.1       20
       192.168.1.255  255.255.255.255      192.168.1.2     192.168.1.2       20
           224.0.0.0        240.0.0.0     10.15.168.53    10.15.168.53       30
           224.0.0.0        240.0.0.0      192.168.1.2     192.168.1.2       20
     255.255.255.255  255.255.255.255     10.15.168.53    10.15.168.53       1
     255.255.255.255  255.255.255.255      192.168.1.2     192.168.1.2       1
    Основной шлюз:         192.168.1.1
    ===========================================================================
    Постоянные маршруты:
     Отсутствует
  • DayGaykin © (08.11.17 16:51) [19]
    По-моему тут другие IP адреса.
  • aka © (08.11.17 16:52) [20]

    > DayGaykin ©   (08.11.17 16:51) [19]
    >
    > По-моему тут другие IP адреса.

    Пардон не то.

    C:\Documents and Settings\Администратор>route print
    ===========================================================================
    Список интерфейсов
    0x1 ........................... MS TCP Loopback interface
    0x80002 ...00 1d 7d 36 96 0e ...... Realtek RTL8169/8110 Family Gigabit Ethernet
    NIC - ¦шэшяюЁЄ яырэшЁют•шър яръхЄют
    0x80003 ...00 00 21 e4 c5 c5 ...... Realtek RTL8029(AS) PCI Ethernet рфряЄхЁ - ¦
    шэшяюЁЄ яырэшЁют•шър яръхЄют
    ===========================================================================
    ===========================================================================
    Активные маршруты:
    Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
             0.0.0.0          0.0.0.0      10.15.150.1    10.15.150.70       30
             0.0.0.0          0.0.0.0      192.168.1.1    192.168.1.17       20
         10.15.150.0    255.255.255.0     10.15.150.70    10.15.150.70       30
        10.15.150.70  255.255.255.255        127.0.0.1       127.0.0.1       30
      10.255.255.255  255.255.255.255     10.15.150.70    10.15.150.70       30
           127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
         192.168.1.0    255.255.255.0     192.168.1.17    192.168.1.17       20
        192.168.1.17  255.255.255.255        127.0.0.1       127.0.0.1       20
       192.168.1.255  255.255.255.255     192.168.1.17    192.168.1.17       20
           224.0.0.0        240.0.0.0     10.15.150.70    10.15.150.70       30
           224.0.0.0        240.0.0.0     192.168.1.17    192.168.1.17       20
     255.255.255.255  255.255.255.255     10.15.150.70    10.15.150.70       1
     255.255.255.255  255.255.255.255     192.168.1.17    192.168.1.17       1
    Основной шлюз:         192.168.1.1
    ===========================================================================
    Постоянные маршруты:
     Отсутствует

    C:\Documents and Settings\Администратор>
  • DayGaykin © (08.11.17 17:21) [21]
    Тут все норм. А той машины, с которой пингуешь?
  • aka © (08.11.17 17:48) [22]
    Завтра напишу, уже с работы приехал. Но 10.15.150.70 не пингуется с любой машины локалки (так что там наверное все нормально). Выдергиваешь модем (192.168.1.1) с другой сетевухи и начинает пинговаться 10.15.150.70 с любой 10.15.150.xx. Странно как-то
  • aka © (09.11.17 15:36) [23]
    Поставил две внешние сетевые, интегрированную отключил. Все начало работать как нужно.
  • tesseract © (09.11.17 22:41) [24]
    >>Выдергиваешь модем (192.168.1.1) с другой сетевухи

    У тебя GW на нем висит. Посмотри настройки сети, которые он тебе по DHCP выдал,  или там статика?
 
Конференция "Прочее" » многопоточность с Telnet
Есть новые Нет новых   [134430   +0][b:0][p:0.001]