Все ку.
Вот начал постигать большой и плотный мир nodemcu, столкнулся с проблемами и очень надо помощь знающих людей чтобы направили на путь истинный.
В коде не вижу ничего такого что могло быть приводить к проблемам. При загрузке модуля в консоле делаю просто: dofile("mem.lua"), потом уже перенесу в init.lua, но не суть в этом всем.
Итак:
Резульатат в консоле:
Прошивка:
nodemcu_integer_0.9.6-dev_20150704.bin
Пробовал:
nodemcu_float_0.9.6-dev_20150704.bin
Проблема и там и там. Как видно памяти вроде хватает, но падает при множественных запросах. Пока вижу вывод что надо контролировать количество запросов которые поступают на веб сервер, но мне кажется это не много костылем, может есть какие-то причины почему веб сервер падает?
Вот начал постигать большой и плотный мир nodemcu, столкнулся с проблемами и очень надо помощь знающих людей чтобы направили на путь истинный.
Код:
tmr.alarm(0, 5000, 0, function()
print('Enter to timer heap:',node.heap())
dofile("mem2.lua")
print('Exit for timer, heap:',node.heap())
end)
Код:
print('Load file mem2.lua, heap:',node.heap())
SSID = "HmH"
APPWD = "qazc"
wifi.setmode(wifi.STATION)
wifi.sta.config(SSID,APPWD)
wifi.sta.autoconnect(1)
local function start_server()
local count = 0
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive",function(conn,payload)
-- print(payload)
print('Count: '.. count ..', heap:',node.heap())
conn:send("<h1> Hello, Mike's ESP.</h1>")
end)
conn:on("sent",function(conn)
conn:close()
count = count + 1
end)
end)
end
local function connect()
local cnt = 0
tmr.alarm(1, 1000, 1, function ()
print('TMR1 in connection start, heap:',node.heap())
local ipAddr = wifi.sta.getip()
if ((( ipAddr == nil ) or ( ipAddr == "0.0.0.0" )) and ( cnt < 10 )) then
print("Waiting for connection, s: "..cnt)
cnt = cnt + 1
else
tmr.stop(1)
print('IP: ',wifi.sta.getip())
print('MAC: ',wifi.sta.getmac())
cnt = nil
ipAddr = nil
collectgarbage("collect")
print("After garbage in connect",node.heap())
start_server()
end
end)
end
connect()
В коде не вижу ничего такого что могло быть приводить к проблемам. При загрузке модуля в консоле делаю просто: dofile("mem.lua"), потом уже перенесу в init.lua, но не суть в этом всем.
Итак:
Резульатат в консоле:
А вот что отправляю на клиенте из консоли:Enter to timer heap: 34064
Load file mem2.lua, heap: 26072
Exit for timer, heap: 28072
TMR1 in connection start, heap: 29584
Waiting for connection, s: 0
TMR1 in connection start, heap: 30136
IP: 192.168.7.197 255.255.255.0 192.168.7.254
MAC: 5c:cf:7f:87:4e:e8
After garbage in connect 30264
> Count: 0, heap: 28920
Count: 1, heap: 28336
Count: 2, heap: 27688
Count: 3, heap: 27088
Count: 4, heap: 26384
Count: 5, heap: 25872
Count: 6, heap: 25752
Count: 7, heap: 25776
Count: 8, heap: 25616
Count: 9, heap: 25416
Count: 10, heap: 28784
Count: 11, heap: 28240
Count: 12, heap: 27616
Count: 13, heap: 26984
Count: 14, heap: 26432
PANIC: unprotected error in call to Lua API (attempt to call a nil value)
H������ ኋ��@hʅ���
NodeMCU 0.9.6 build 20150704 powered by Lua 5.1.4
>
Все, веб сервер на модуле рухнул, почему? не могу понять и как предотвратить такое. При любом множественном чихе, веб сервер падает.for i in {1..20}; do curl http://192.168.7.197; done
<h1> Hello, Mike's ESP.</h1><h1> Hello, Mike's ESP.</h1><h1> Hello, Mike's ESP.</h1><h1> Hello, Mike's ESP.</h1><h1> Hello, Mike's ESP.</h1>curl: (56) Recv failure: Соединение разорвано другой стороной
curl: (56) Recv failure: Соединение разорвано другой стороной
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
curl: (7) Failed to connect to 192.168.7.197 port 80: В соединении отказано
Прошивка:
nodemcu_integer_0.9.6-dev_20150704.bin
Пробовал:
nodemcu_float_0.9.6-dev_20150704.bin
Проблема и там и там. Как видно памяти вроде хватает, но падает при множественных запросах. Пока вижу вывод что надо контролировать количество запросов которые поступают на веб сервер, но мне кажется это не много костылем, может есть какие-то причины почему веб сервер падает?