Зависание плагина MegaD



  • @Alex_Jet:

    UPD: разработчик MegaD просит привести пример HTTP пакета, который генерирует ваш плагин. Сам только вечером wireshark-ом могу глянуть.

    HTTP через wiresark:

    Req: GET /sec/?cmd=all HTTP/1.1 Host: 192.168.0.14 Connection: close

    Resp: HTTP/1.0 200 OK Content-Type: text/html

    Больше там ничего нет, это все выводится в логе.

    Или нужен весь TCP?

    @Alex_Jet:

    В общем, веду все это я к тому, что придется скорее всего делать такой же опрос, как происходит в php. Последовательно и синхронно..

    Хорошо, не проблема, cделаем 🙂
    @Alex_Jet:

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

    Наверно, это все же слишком большое ограничение с учетом задержек, которые делаются во время опроса?



  • @intrapro:

    Если речь о журнале, который доступен из основного интерфейса, запись ведется в ежедневные журналы. Папка /opt/intrahouse/base/journal/

    ОК, посмотрю там.
    @intrapro:

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

    Само собой значения везде "нужные". С самого начала опрос всех датчиков был через 60 секунд, а "Время ожидания данных до сигнализации об ошибке" установлено 120 секунд. Для датчика CO2, данные по которому формируются скриптом с периодом 300 секунд, "Время ожидания данных до сигнализации об ошибке" установлено 320 секунд.
    @intrapro:

    Наверно, это все же слишком большое ограничение с учетом задержек, которые делаются во время опроса?

    Вам как профессионалам виднее. Я самоучка необразованный :lol:



  • Контроллер снова повесился!!! :twisted: :twisted: :twisted: Uptime - ~19 часов. Интересна сама причина - от чего он вешается. Думаю, пока Андрей не установит у себя вашу систему, так ни к чему и не придем.



  • Хорошо, не будем упираться. Синхронно так синхронно.

    К концу недели сделаем.

    А лог был включен?

    У нас работает MegaD 328 уже много дней, без проблем. Правда там все только дискретное



  • @intrapro:

    А лог был включен?

    У нас работает MegaD 328 уже много дней, без проблем. Правда там все только дискретное

    Лог включен всегда, прикладываю его в последние минуты работы контроллера (сбой по журналу - в 18.01.2017 17:34:08).

    MegaD-328 у меня работает примерно 4-5 месяцев без каких-либо сбоев, но там правда - все аналоговое (у меня висит на ней 1 шт. СМК, 2 шт. DS18B20, 2 шт. DHT22, 2 шт. АЦП - один со скриптом). А вот MegaD-2561 начала сбоить с тех пор как подключил HTU21D! Но выяснить причину этого пока не удается.

    18.01.2017 17:26:05 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=30&cmd=get
    18.01.2017 17:26:05 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=30&cmd=get HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:26:05 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:26:05 localhost <= 192.168.12.20:80 HTTP temp:26.50/hum:13.00
    18.01.2017 17:26:05 MG2?30_1=26.5&30_2=13&
    18.01.2017 17:26:05 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:27:07 
    18.01.2017 17:27:07 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d
    18.01.2017 17:27:07 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:27:07 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:27:07 localhost <= 192.168.12.20:80 HTTP 16.23
    18.01.2017 17:27:07 MG2?342=16.23&
    18.01.2017 17:27:07 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:27:09 
    18.01.2017 17:27:09 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    18.01.2017 17:27:09 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1 HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:27:09 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:27:09 localhost <= 192.168.12.20:80 HTTP 27.09
    18.01.2017 17:27:09 MG2?341=27.09&
    18.01.2017 17:27:09 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:27:11 
    18.01.2017 17:27:11 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=31&cmd=list
    18.01.2017 17:27:11 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=31&cmd=list HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:27:12 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:27:12 localhost <= 192.168.12.20:80 HTTP ff862a831501:25.87;ff6e2a831501:25.93;ff676b821503:25.56
    18.01.2017 17:27:12 MG2?31_ff862a831501=25.87&31_ff6e2a831501=25.93&31_ff676b821503=25.56&
    18.01.2017 17:27:12 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:27:13 
    18.01.2017 17:27:13 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=30&cmd=get
    18.01.2017 17:27:13 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=30&cmd=get HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:27:14 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:27:14 localhost <= 192.168.12.20:80 HTTP temp:26.50/hum:13.00
    18.01.2017 17:27:14 MG2?30_1=26.5&30_2=13&
    18.01.2017 17:27:14 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:28:16 
    18.01.2017 17:28:16 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d
    18.01.2017 17:28:16 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:28:16 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:28:16 localhost <= 192.168.12.20:80 HTTP 16.20
    18.01.2017 17:28:16 MG2?342=16.2&
    18.01.2017 17:28:16 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:28:18 
    18.01.2017 17:28:18 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    18.01.2017 17:28:18 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1 HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:28:18 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:28:18 localhost <= 192.168.12.20:80 HTTP 27.09
    18.01.2017 17:28:18 MG2?341=27.09&
    18.01.2017 17:28:18 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:28:20 
    18.01.2017 17:28:20 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=31&cmd=list
    18.01.2017 17:28:20 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=31&cmd=list HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:28:20 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:28:20 localhost <= 192.168.12.20:80 HTTP ff862a831501:25.93;ff6e2a831501:25.93;ff676b821503:25.56
    18.01.2017 17:28:20 MG2?31_ff862a831501=25.93&31_ff6e2a831501=25.93&31_ff676b821503=25.56&
    18.01.2017 17:28:20 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:28:22 
    18.01.2017 17:28:22 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=30&cmd=get
    18.01.2017 17:28:22 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=30&cmd=get HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:28:22 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:28:22 localhost <= 192.168.12.20:80 HTTP temp:27.10/hum:13.70
    18.01.2017 17:28:22 MG2?30_1=27.1&30_2=13.7&
    18.01.2017 17:28:22 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:29:04 
    18.01.2017 17:29:04 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=36&cmd=get
    18.01.2017 17:29:04 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=36&cmd=get HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:29:04 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:29:04 localhost <= 192.168.12.20:80 HTTP 163
    18.01.2017 17:29:04 Address 36
    18.01.2017 17:29:04     run script: val=163 depo={ res: [] }
    18.01.2017 17:29:04  script return:{ reqsek: 5 } depo={ res: [ 163 ] }
    18.01.2017 17:29:04 Address 36\. Shift request interval: 5 sek.
    18.01.2017 17:29:04 MG2?
    18.01.2017 17:29:04 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:29:10 
    18.01.2017 17:29:10 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=36&cmd=get
    18.01.2017 17:29:10 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=36&cmd=get HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:29:10 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:29:10 localhost <= 192.168.12.20:80 HTTP 172
    18.01.2017 17:29:10 Address 36
    18.01.2017 17:29:10     run script: val=172 depo={ res: [ 163 ] }
    18.01.2017 17:29:10  script return:{ reqsek: 5 } depo={ res: [ 163, 172 ] }
    18.01.2017 17:29:10 MG2?
    18.01.2017 17:29:10 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:29:16 
    18.01.2017 17:29:16 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=36&cmd=get
    18.01.2017 17:29:16 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=36&cmd=get HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:29:16 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:29:16 localhost <= 192.168.12.20:80 HTTP 167
    18.01.2017 17:29:16 Address 36
    18.01.2017 17:29:16     run script: val=167 depo={ res: [ 163, 172 ] }
    18.01.2017 17:29:16  script return:{ reqsek: 5 } depo={ res: [ 163, 172, 167 ] }
    18.01.2017 17:29:16 MG2?
    18.01.2017 17:29:16 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:29:22 
    18.01.2017 17:29:22 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=36&cmd=get
    18.01.2017 17:29:22 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=36&cmd=get HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:29:22 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:29:22 localhost <= 192.168.12.20:80 HTTP 159
    18.01.2017 17:29:22 Address 36
    18.01.2017 17:29:22     run script: val=159 depo={ res: [ 163, 172, 167 ] }
    18.01.2017 17:29:22  script return:{ reqsek: 5 } depo={ res: [ 163, 172, 167, 159 ] }
    18.01.2017 17:29:22 MG2?
    18.01.2017 17:29:22 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:29:24 
    18.01.2017 17:29:24 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d
    18.01.2017 17:29:24 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:29:24 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:29:24 localhost <= 192.168.12.20:80 HTTP 16.36
    18.01.2017 17:29:24 MG2?342=16.36&
    18.01.2017 17:29:24 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:29:26 
    18.01.2017 17:29:26 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    18.01.2017 17:29:26 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1 HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:29:26 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:29:26 localhost <= 192.168.12.20:80 HTTP 27.07
    18.01.2017 17:29:26 MG2?341=27.07&
    18.01.2017 17:29:26 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:29:28 
    18.01.2017 17:29:28 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=31&cmd=list
    18.01.2017 17:29:28 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=31&cmd=list HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:29:28 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:29:28 localhost <= 192.168.12.20:80 HTTP ff862a831501:25.93;ff6e2a831501:26.00;ff676b821503:25.62
    18.01.2017 17:29:28 MG2?31_ff862a831501=25.93&31_ff6e2a831501=26.00&31_ff676b821503=25.62&
    18.01.2017 17:29:28 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:29:30 
    18.01.2017 17:29:30 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=30&cmd=get
    18.01.2017 17:29:30 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=30&cmd=get HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:29:30 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:29:30 localhost <= 192.168.12.20:80 HTTP temp:26.40/hum:13.10
    18.01.2017 17:29:30 MG2?30_1=26.4&30_2=13.1&
    18.01.2017 17:29:30 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:29:32 
    18.01.2017 17:29:32 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=36&cmd=get
    18.01.2017 17:29:32 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=36&cmd=get HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:29:33 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:29:33 localhost <= 192.168.12.20:80 HTTP 166
    18.01.2017 17:29:33 Address 36
    18.01.2017 17:29:33     run script: val=166 depo={ res: [ 163, 172, 167, 159 ] }
    18.01.2017 17:29:33  script return:{ val: 1000, reqsek: 300 } depo={ res: [] }
    18.01.2017 17:29:33 Address 36\. Shift request interval: 300 sek.
    18.01.2017 17:29:33 MG2?36=1000&
    18.01.2017 17:29:33 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:30:32 
    18.01.2017 17:30:32 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d
    18.01.2017 17:30:32 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:30:32 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:30:32 localhost <= 192.168.12.20:80 HTTP 15.83
    18.01.2017 17:30:32 MG2?342=15.83&
    18.01.2017 17:30:32 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:30:34 
    18.01.2017 17:30:34 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    18.01.2017 17:30:34 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1 HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:30:34 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:30:34 localhost <= 192.168.12.20:80 HTTP 27.07
    18.01.2017 17:30:34 MG2?341=27.07&
    18.01.2017 17:30:34 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:30:36 
    18.01.2017 17:30:36 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=31&cmd=list
    18.01.2017 17:30:36 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=31&cmd=list HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:30:36 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:30:36 localhost <= 192.168.12.20:80 HTTP ff862a831501:25.87;ff6e2a831501:25.87;ff676b821503:25.50
    18.01.2017 17:30:36 MG2?31_ff862a831501=25.87&31_ff6e2a831501=25.87&31_ff676b821503=25.50&
    18.01.2017 17:30:36 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:30:38 
    18.01.2017 17:30:38 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=30&cmd=get
    18.01.2017 17:30:38 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=30&cmd=get HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:30:38 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:30:38 localhost <= 192.168.12.20:80 HTTP temp:26.50/hum:13.20
    18.01.2017 17:30:38 MG2?30_1=26.5&30_2=13.2&
    18.01.2017 17:30:38 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:31:40 
    18.01.2017 17:31:40 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d
    18.01.2017 17:31:40 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:31:40 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:31:40 localhost <= 192.168.12.20:80 HTTP 14.87
    18.01.2017 17:31:40 MG2?342=14.87&
    18.01.2017 17:31:40 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:31:42 
    18.01.2017 17:31:42 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    18.01.2017 17:31:42 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1 HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:31:42 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:31:42 localhost <= 192.168.12.20:80 HTTP 27.05
    18.01.2017 17:31:42 MG2?341=27.05&
    18.01.2017 17:31:42 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:31:43 localhost => 192.168.12.20:80 HTTP GET /sec/?cmd=22:0
    18.01.2017 17:31:44 
    18.01.2017 17:31:44 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=31&cmd=list
    18.01.2017 17:31:44 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=31&cmd=list HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:31:44 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:31:44 localhost <= 192.168.12.20:80 HTTP ff862a831501:25.75;ff6e2a831501:25.81;ff676b821503:25.43
    18.01.2017 17:31:44 MG2?31_ff862a831501=25.75&31_ff6e2a831501=25.81&31_ff676b821503=25.43&
    18.01.2017 17:31:44 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:31:46 
    18.01.2017 17:31:46 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=30&cmd=get
    18.01.2017 17:31:46 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=30&cmd=get HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:31:46 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:31:46 localhost <= 192.168.12.20:80 HTTP temp:26.50/hum:11.90
    18.01.2017 17:31:46 MG2?30_1=26.5&30_2=11.9&
    18.01.2017 17:31:46 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:32:48 
    18.01.2017 17:32:48 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d
    18.01.2017 17:32:48 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:32:48 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    18.01.2017 17:32:48 localhost <= 192.168.12.20:80 HTTP 15.08
    18.01.2017 17:32:48 MG2?342=15.08&
    18.01.2017 17:32:48 localhost <=>192.168.12.20:80 socket closed
    18.01.2017 17:32:50 
    18.01.2017 17:32:50 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    18.01.2017 17:32:50 localhost <=>192.168.12.20:80 socket handle=67\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1 HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:32:52 
    18.01.2017 17:32:52 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=31&cmd=list
    18.01.2017 17:32:52 localhost <=>192.168.12.20:80 socket handle=68\. Header: GET /sec/?pt=31&cmd=list HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:32:54 
    18.01.2017 17:32:54 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=30&cmd=get
    18.01.2017 17:32:54 localhost <=>192.168.12.20:80 socket handle=69\. Header: GET /sec/?pt=30&cmd=get HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:33:56 
    18.01.2017 17:33:56 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d
    18.01.2017 17:33:56 localhost <=>192.168.12.20:80 socket handle=70\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:33:58 
    18.01.2017 17:33:58 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    18.01.2017 17:33:58 localhost <=>192.168.12.20:80 socket handle=71\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1 HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:33:58 localhost <= 192.168.12.20:80 Error EHOSTUNREACH.  Stopped.
    18.01.2017 17:34:04 
    18.01.2017 17:34:04 MegaD plugin has started.
    18.01.2017 17:34:04 Listening localhost:8020
    18.01.2017 17:34:04 Address 36 (IA36). Loading script
    18.01.2017 17:34:04 Polling   192.168.12.20:80/sec/?cmd=all, interval 0 sek
    18.01.2017 17:34:04 Polling   192.168.12.20:80/sec/?pt=30&cmd=get, interval 61 sek
    18.01.2017 17:34:04 Polling   192.168.12.20:80/sec/?pt=36&cmd=get, interval 300 sek
    18.01.2017 17:34:04 Polling   192.168.12.20:80/sec/?pt=31&cmd=list, interval 63 sek
    18.01.2017 17:34:04 Polling   192.168.12.20:80/sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1, interval 65 sek
    18.01.2017 17:34:04 Polling   192.168.12.20:80/sec/?pt=34&scl=35&i2c_dev=htu21d, interval 67 sek
    18.01.2017 17:34:05 
    18.01.2017 17:34:05 localhost => 192.168.12.20:80 HTTP GET /sec/?cmd=all
    18.01.2017 17:34:05 localhost <=>192.168.12.20:80 socket handle=16\. Header: GET /sec/?cmd=all HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    18.01.2017 17:34:07 localhost <= 192.168.12.20:80 Error EHOSTUNREACH.  Stopped.
    
    

    Проанализировал сам. В 18.01.2017 17:32:48 контроллер последний раз ответил на запрос влажности с датчика HTU21D (localhost <=>192.168.12.20:80 socket handle=67. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d HTTP/1.1). Вечером посмотрю на чем контроллер завис в предыдущий раз.



  • @Alex_Jet:

    контроллер вешается только в том случае если с помощью intrahouse начинаю опрашивать HTU21D с помощью команды /%pwd%/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1. То есть как только ввожу в действие опрос этого датчика, то MegaD спустя 4-9 часов зависает. Замечено, что если опрашиваю сразу по обоим параметрам (температура и влажность), причем интервал опроса один и то же для обоих каналов - 60 секунд, то контроллер вешается быстрее - от 2 до 3-х часов.

    У разработчика MegaD моя конфигурация на php уже работает несколько суток без каких-либо сбоев (опрос датчиков каждые 8 секунд).

    В свете вашего предыдущего сообщения проанализировали последний лог. Видимо Вы правы, проблема в запросе HTU21D повторно с небольшим интервалом.

    На php без сбоев работает c интервалом 8 сек! А у нас получился интервал 2 сек при зависании.

    Только для отладки: сделайте периоды опроса для датчиков небольшие (5-10 сек), датчик с 5-кратным съемом значений можно совсем не мучить, т.к. времена сдвинутся. Но интервал опроса в плагине сделайте 8 сек (вместо 2). Тогда следующий запрос не будет послан ранее чем через 8 сек.

    Иначе непонятно, поможет ли переписывание плагина в синхронном стиле. Если контроллер не отвечает на запрос при синхронной работе в течение 2 сек - все равно надо что-то делать. Нужен тайминг - когда можно снова посылать запрос. Или прекращать работу.



  • Я вероятно не верно выразился. Есть php скрипт, в нем без каких-либо задержек подряд опрашиваются датчики, результат записывается в БД. Этот скрипт через cron запускается каждые 8 секунд.

    В 03:26:53 возобновил работу плагина после перезагрузки контроллера. Опрос только HTU21D (температура и влажность) с периодом 60 секунд по каждому параметру. В плагине задержка так и осталась 2000 мС.

    В 06:09:25 плагин завис. После успешного ответа о значении влажности последовал запрос по значению температуры, но контроллер уже не ответил.



  • Понятно. Переходим к плану Б :).

    Возможно, полезно было бы посмотреть логи Апача при опросе на php.



  • @intrapro:

    Понятно. Переходим к плану Б :).

    Возможно, полезно было бы посмотреть логи Апача при опросе на php.

    На сколько знаю, Андрей решил развернуть intrahouse у себя чтобы понять в чем дело. Но как он сказал - это займет некоторое время. У меня вчера как-то неправильно встал wireshark, поэтому не смог посмотреть весь обмен между IH и контроллером. Логи Апача в принципе могу сделать.



  • Alex_Jet, для проверки синхронного варианта сделали копию плагина megad2.js (основной - megad.js).

    Пожалуйста, обновитесь и измените в свойствах плагина имя модуля на megad2.js

    Затем нужно перезагрузить сервер.

    В журнале работы плагина можно увидеть, какой плагин запущен (Run ./ihlib/equip/megad.js или megad2.js).

    Также в логе плагина время теперь выводится с миллисекундами.

    Будем надеяться, что проблема разрешится. Если нет - перейдем к логам Апача 🙂



  • @intrapro:

    Пожалуйста, обновитесь и измените в свойствах плагина имя модуля на megad2.js

    Отличная новость, а то я у же ночами не сплю, ломая голову почему зависает MegaD :x

    Правда при первом запуске megad2.js контроллер повис… перезагружу его только вечером, чтобы попробовать стартовать вновь. Может правда у Вас оригинальные HTTP заголовки генерируются? Андрей на них грешит, поскольку пробовал даже ddosить контроллер, но он так и не завис.



  • @Alex_Jet:

    Адрей .. пробовал даже ddosить контроллер, но он так и не завис.

    Если это так, то боюсь синхронизация опроса не поможет.

    @Alex_Jet:

    Может правда у Вас оригинальные HTTP заголовки генерируются? Андрей на них грешит.

    Мы используем стандартную библиотеку Node.js для работы на уровне http. Ее же используем для связи с другим железом по http.

    Пакет стандартный:

    GET /sec/?... HTTP 1.1 Host:192.168.0.14  Connection: close
    
    

    Поскольку обмен идет на уровне железа, а не через браузер, в заголовках дополнительно не передается ничего кроме Connection: close

    (было добавлено в первом раунде поиска ошибок, но HTTP 1.0 этот заголовок не использует, не думаю что это проблема).

    Может быть сам контроллер ожидает и анализирует какие-то заголовки?

    Еще версия - контроллер использует протокол HTTP 1.0, библиотека плагина использует протокол HTTP 1.1 (но не использует никакие специальные возможности 1.1) Для использования 1.0 нужно переходить на более низкий уровень обмена - напрямую через TCP, это можно сделать, но хочется убедиться, что проблема именно в этом (маловероятно).

    Единственное, что еще можно сделать для проверки протокола - сравнить сетевой трафик в обоих реализациях (nodejs и php).

    Запишите трафик в файлы pcap и пришлите нам оба файла

    Получить pcap через tcpdump:

    sudo tcpdump -s0 -A -vvv host 192.168.0.14 -w megadump.pcap
    
    

    Но давайте все же попробуем поискать не только под фонарем 🙂 Что мы имеем?

    1. intraHouse работает с MegaD 328 без проблем.

    2. intraHouse работает с MegaD 2561 без проблем, пока не добавляется датчик, работающий по I2C с нативной поддержкой в контроллере

    3. Плагин intraHouse один и тот же, запросы одни и те же.

    4. Система на php работает с подобным датчиком без проблем

    М.б. попробовать поменять датчик?



  • Перезапустил контроллер. Все датчики поставил на опрос. Через 6 минут снова проблема с HTU21D и опрос остановился именно на запросе температуры!!!

    20.01 18:14:01.359 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    20.01 18:14:01.364 localhost <=>192.168.12.20:80 socket handle=16\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1 HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    20.01 18:14:01.558 Socket IN FETCH.
    20.01 18:14:01.759 Socket IN FETCH.
    20.01 18:14:01.959 Socket IN FETCH.
    20.01 18:14:02.159 Socket IN FETCH.
    
    

    Что такое Socket IN FETCH?

    Да, я головой понимаю, что проблема вылезает только при подключении HTU21D к контроллеру. В наличии только один датчик HTU21D. Сегодня пришел его аналог, но пока не забрал с почты.



  • Socket IN FETCH. - сокет находится в процессе получения данных. Т.е. связь установлена, запрос ушел, но нет ответа.

    Если это так быстро сейчас ловится - можно параллельно запустить tcpdump и записать в файл (-w ..)

    Потом этот файл можно смотреть с помощью wireshark или тем же tcpdump -r megadump.pcap

    Пришлите файл нам, пожалуйста



  • Ок, записал файл. К слову оказалось, что у меня wireshark был под виндой еще… Пояснения будут в письме.

    Socket IN FETCH проявляется спустя 4-6 минут. При этом управлять выходами контроллера из веба можно:)



  • В дампе видно, что контроллер не ответил на последний запрос. Можно продолжить эксперименты:

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

    В новом обновлении в megad2 изменили таймаут сокета на 2 сек.

    Т.е. через 2 сек опрос продолжится. Плюс попробовать переключить актуатор. Сделать дамп для этого случая

    2. Переключить плагин на megad основной и тоже сделать дамп.

    Если сделаете, пришлите нам



  • Поменял датчик HTU21D на SI7021. Ситуация такая же - при работе плагина megad через некоторое время контроллер зависает насовсем.

    Скинул часть лога плагина (в момент зависания) и дамп на почту.

    Начал тестировать обновленный плагин megad2. Сразу вопросы - при включении/выключении актюаторов плагин ругается (см. лог), при этом актюаторы срабатывают нормально. А еще в лог при срабатывании актюаторов в запросе выводится %pwd%, а не пароль (sec), в реальности в запросе скорее есть sec (посмотрю дамп после записи), поскольку актюаторы срабатывают. Иначе бы не срабатывали а контроллер выдавал бы Unauthorized.

    23.01 01:00:05.959 
    23.01 01:00:05.959 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d
    23.01 01:00:05.961 localhost <=>192.168.12.20:80 socket handle=18\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    23.01 01:00:05.984 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    23.01 01:00:05.986 localhost <= 192.168.12.20:80 HTTP 46.53
    23.01 01:00:05.986 MG2?342=46.53&
    23.01 01:00:05.987 localhost <=>192.168.12.20:80 socket closed
    23.01 01:01:05.630 localhost => 192.168.12.20:80 HTTP GET /%pwd%/?cmd=7:1
    23.01 01:01:05.638 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    23.01 01:01:05.642 ERR (uncaughtException): [ReferenceError: data is not defined]
    23.01 01:01:05.859 
    23.01 01:01:05.860 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    23.01 01:01:05.862 localhost <=>192.168.12.20:80 socket handle=18\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1 HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    23.01 01:01:05.915 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    23.01 01:01:05.917 localhost <= 192.168.12.20:80 HTTP 27.00
    23.01 01:01:05.917 MG2?341=27&
    23.01 01:01:05.918 localhost <=>192.168.12.20:80 socket closed
    23.01 01:01:06.60 
    23.01 01:01:06.60 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d
    23.01 01:01:06.62 localhost <=>192.168.12.20:80 socket handle=18\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    23.01 01:01:06.84 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    23.01 01:01:06.86 localhost <= 192.168.12.20:80 HTTP 46.53
    23.01 01:01:06.86 MG2?342=46.53&
    23.01 01:01:06.87 localhost <=>192.168.12.20:80 socket closed
    23.01 01:01:10.425 localhost => 192.168.12.20:80 HTTP GET /%pwd%/?cmd=7:0
    23.01 01:01:10.433 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    23.01 01:01:10.437 ERR (uncaughtException): [ReferenceError: data is not defined]
    23.01 01:02:05.957 
    23.01 01:02:05.957 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    23.01 01:02:05.959 localhost <=>192.168.12.20:80 socket handle=18\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1 HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    23.01 01:02:06.12 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    23.01 01:02:06.19 localhost <= 192.168.12.20:80 HTTP 27.00
    23.01 01:02:06.20 MG2?341=27&
    23.01 01:02:06.22 localhost <=>192.168.12.20:80 socket closed
    23.01 01:02:06.157 
    23.01 01:02:06.158 localhost => 192.168.12.20:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d
    23.01 01:02:06.163 localhost <=>192.168.12.20:80 socket handle=18\. Header: GET /sec/?pt=34&scl=35&i2c_dev=htu21d HTTP/1.1
    Host: 192.168.12.20
    Connection: close
    
    23.01 01:02:06.185 localhost <= 192.168.12.20:80 response: statusCode=200 contentType = text/html
    23.01 01:02:06.187 localhost <= 192.168.12.20:80 HTTP 46.53
    23.01 01:02:06.188 MG2?342=46.53&
    23.01 01:02:06.189 localhost <=>192.168.12.20:80 socket closed
    
    

    Кстати, только сейчас обратил внимание, что в принципе контроллер подтверждает выполнение команды! В браузере при наборе, например, команды "sec/?cmd=7:2", контроллер отдает "Done".



  • @Alex_Jet:

    Поменял датчик HTU21D на SI7021. Ситуация такая же - при работе плагина megad через некоторое время контроллер зависает насовсем. Скинул часть лога плагина (в момент зависания) и дамп на почту.

    Начал тестировать обновленный плагин megad2. Сразу вопросы - при включении/выключении актюаторов плагин ругается (см. лог), при этом актюаторы срабатывают нормально. А еще в лог при срабатывании актюаторов в запросе выводится %pwd%, а не пароль (sec), в реальности в запросе скорее есть sec (посмотрю дамп после записи), поскольку актюаторы срабатывают.

    Да, почту 2 транша получили. В megad2 косяк при логировании, на переключения не влияет. Меняли в спешке, поправим 🙂

    @Alex_Jet:

    Кстати, только сейчас обратил внимание, что в принципе контроллер подтверждает выполнение команды! В браузере при наборе, например, команды "sec/?cmd=7:2", контроллер отдает "Done".

    Когда мы контроллер получили, тоже это увидели. В принципе, можно сделать обработку Done в плагине



  • Подскажите, плагин в некоторые моменты работы выдает ошибки. Что это за ошибки?

    31.01 08:42:42.0272 localhost => 192.168.12.21:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    31.01 08:43:12.0279 localhost <=>192.168.12.21:80 Socket timed out - abort!
    31.01 08:43:12.0283 localhost <= 192.168.12.21:80 Error ECONNRESET.  Stopped.
    31.01 08:43:18.0033 
    31.01 08:43:18.0040 MegaD plugin has started.
    31.01 08:43:18.0092 Listening localhost:10021
    31.01 08:43:18.0104 Address 36 (IA36). Loading script
    31.01 08:43:18.0106 Polling   192.168.12.21:80/sec/?cmd=all, interval 0 sek
    31.01 08:43:18.0107 Polling   192.168.12.21:80/sec/?pt=36&cmd=get, interval 300 sek
    31.01 08:43:18.0107 Polling   192.168.12.21:80/sec/?pt=31&cmd=list, interval 60 sek
    31.01 08:43:18.0107 Polling   192.168.12.21:80/sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1, interval 60 sek
    31.01 08:43:18.0107 Polling   192.168.12.21:80/sec/?pt=34&scl=35&i2c_dev=htu21d, interval 60 sek
    31.01 08:43:18.0114 localhost => 192.168.12.21:80 HTTP GET /sec/?cmd=all
    
    

    С зависанием контроллера так и не разобрались, однако можете прокомментировать почему так получается - в 31.01 09:17:34.0278 идет запрос температуры, контроллер вешается и перезагружается встроенным watchdog-ом. В 31.01 09:17:44.0289 видим, что он перезагрузился, однако в 31.01 09:17:46.0964 прилетает значение температуры, которое не запрашивалось у контроллера после его перезагрузки! Как такое может быть?

    31.01 09:17:34.0278 localhost => 192.168.12.21:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    31.01 09:17:44.0289 192.168.12.21 => localhost:10021 HTTP GET /mod_megad.php?st=1
    31.01 09:17:44.0294 192.168.12.21 <= localhost:10021 
    31.01 09:17:44.0307 Redirect to MG3
    31.01 09:17:44.0309 localhost => 192.168.12.21:80 HTTP GET /sec/?cmd=22:1
    31.01 09:17:44.0312 MG3?22=1&
    31.01 09:17:44.0332 localhost <= 192.168.12.21:80 HTTP Done
    31.01 09:17:46.0964 localhost <= 192.168.12.21:80 HTTP 25.89
    31.01 09:17:46.0965 MG3?341=25.89&
    31.01 09:17:47.0119 localhost => 192.168.12.21:80 HTTP GET /sec/?cmd=all
    31.01 09:17:47.0243 localhost <= 192.168.12.21:80 HTTP OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF;OFF;OFF;OFF;OFF;OFF;OFF;ON;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;ON;OFF;OFF;OFF;OFF;OFF;OFF;ON;temp:0.00/hum:0.00;;OFF;OFF;;OFF;230;ON
    
    


  • @Alex_Jet:

    Подскажите, плагин в некоторые моменты работы выдает ошибки. Что это за ошибки?

    > 31.01 08:42:42.0272 localhost => 192.168.12.21:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    > 31.01 08:43:12.0279 localhost <=>192.168.12.21:80 Socket timed out - abort!
    > 31.01 08:43:12.0283 localhost <= 192.168.12.21:80 Error ECONNRESET.  Stopped.
    > 
    > 
    

    Socket timed out - abort! - это ошибка прикладного уровня - истек таймаут ожидания ответа на запрос.

    Сейчас таймаут прикладного уровня 30 сек.

    По этой ошибке закрывается сокет, но плагин не завершается. Если бы были другие запросы - они бы передавались.

    ECONNREFUSED, ECONNRESET - это ошибки системного уровня, плагин их перехватывает и завершает работу.

    ECONNREFUSED - в создании соединения отказано

    ECONNRESET - соединение закрыто ( socket hang up - "повесил трубку" )

    Т.е. контроллер не отвечает на запрос в течение таймаута, установленного на системном уровне (30 сек).

    В этом случае плагин завершает работу и через 5 сек перезагружается.

    @Alex_Jet:

    С зависанием контроллера так и не разобрались, однако можете прокомментировать почему так получается - в 31.01 09:17:34.0278 идет запрос температуры, контроллер вешается и перезагружается встроенным watchdog-ом. В 31.01 09:17:44.0289 видим, что он перезагрузился, однако в 31.01 09:17:46.0964 прилетает значение температуры, которое не запрашивалось у контроллера после его перезагрузки! Как такое может быть?

    > 31.01 09:17:34.0278 localhost => 192.168.12.21:80 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    > 31.01 09:17:44.0289 192.168.12.21 => localhost:10021 HTTP GET /mod_megad.php?st=1
    > 31.01 09:17:44.0294 192.168.12.21 <= localhost:10021 
    > 31.01 09:17:46.0964 localhost <= 192.168.12.21:80 HTTP 25.89
    > 
    > 
    

    С таким мы тоже столкнулись, когда тестировали st=1.

    Если передать запрос, а затем перезагрузить контроллер в течение короткого времени, то после перезагрузки он присылает ответ на последний запрос. Объясняется это тем, то по стандарту TCP протокола, "если клиент не получает ответа в течение 10 секунд, то он повторяет процесс соединения заново". Это происходит на сетевом уровне, плагин об этом не знает, он отправил запрос GET и ждет или ответа или ошибки или таймаута. Если укладываемся в таймаут, сокет не закрывается.

    Запрос фактически приходит в контроллер после перезагрузки. Если посмотреть сетевой дамп, это все можно увидеть. Магия сетевых протоколов 🙂


Авторизуйтесь, чтобы ответить