I have created a splitter node that can split json array into multiple separate messages. I wanted to do load testing so I created an array with several thousands elements, then began spllitting them and running subflows. All worked fine initially, but then I started receiving errors "[error] [http request:da15f8a1d616d25d] RequestError: connect ENOBUFS 127.0.0.1:1880 - Local (undefined:undefined)".
What's more worrying for me, is that, as soon as I start receiving these errors, I can't access nodered website (the official one, not my local instance) anymore - as soon as I shutdown node.js, the website starts working again (and this impacts nodered.org only - all other websites work okay). What is going on in the background in NodeRed, does it silently communicate with nodered.org?
No.
Depending on your OS, it can affect winsock or unix sockets.
In short, you are hammering the TCP stack.
You should rate limit the requests using a delay node set to rate limit
mode.
Some reading: http://itamarst.org/writings/win32sockets.html
In Windows, socket.send(buf) will either accept the entire buffer or raise ENOBUFS. Testing indicates that it will internally buffer any amount up to 50MB (this seems to be the total for either the process or the OS, I'm not sure). However, it will not incrementally accept more data to append to a socket's buffer until the big buffer has been completely emptied (seemingly down to the SO_SNDBUF length, which is 8192), but rather raises WSAEWOULDBLOCK instead.
I thought so as well - but then that does not answer why all other websites are working fine, only nodered.org does not.
it doesnt, no, but it could be any number of things that would need very detailed info to diagnose. A copy of your flows to see what it is doing, an understanding of your networks, your DNS provider(s), your physical location & where nodered.org is being hosted at that point in time, if you are using different browsers, etcetcetcetcetcetc. There are lots of factors.
If you are worrying, simply run TCPDump or WireShark to understand what is going on with your requests (and to quell your suspicions about node-red dialing home)
I'm marking your answer as solution because it does make sense and delay node is a nice approach at this so thanks. It still bothers me though, the fact that only single website is unreachable, and it's nodered.org - a bit of a coincidence huh?
There may be some CPU thread locked by your actions. it may be the DNS provider from that site has seen excessive traffic and decided to block or limit. Again, there is a LOT goes on under the hood, over the hood, inside the hood, etc.
Let me try to put your mind at ease:
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.