-
Notifications
You must be signed in to change notification settings - Fork 30k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTP/2 requests eventually start throwing NGHTTP2_ENHANCE_YOUR_CALM errors #27416
Comments
I've been running into the same issue. Not sure how to handle it for now. |
Also seeing this issue with latest node v12. Increasing |
Tried this out across different versions, the issue is present on Node v11.11.0 and up. Taking a quick look at the changelog, 8a551b9d3b appears to be a possible cause, but I don't know what it could be. |
Track received data correctly. Specifically, for the buffer that is used for receiving data, we previously would try to increment the current memory usage by its length, and later decrement it by that, but in the meantime the buffer had been turned over to V8 and its length reset to zero. This gave the impression that more and more memory was consumed by the HTTP/2 session when it was in fact not. Fixes: nodejs#27416 Refs: nodejs#26207
Track received data correctly. Specifically, for the buffer that is used for receiving data, we previously would try to increment the current memory usage by its length, and later decrement it by that, but in the meantime the buffer had been turned over to V8 and its length reset to zero. This gave the impression that more and more memory was consumed by the HTTP/2 session when it was in fact not. Fixes: #27416 Refs: #26207 PR-URL: #27914 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Rich Trott <[email protected]>
Track received data correctly. Specifically, for the buffer that is used for receiving data, we previously would try to increment the current memory usage by its length, and later decrement it by that, but in the meantime the buffer had been turned over to V8 and its length reset to zero. This gave the impression that more and more memory was consumed by the HTTP/2 session when it was in fact not. Fixes: nodejs/node#27416 Refs: nodejs/node#26207 PR-URL: nodejs/node#27914 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Rich Trott <[email protected]>
Track received data correctly. Specifically, for the buffer that is used for receiving data, we previously would try to increment the current memory usage by its length, and later decrement it by that, but in the meantime the buffer had been turned over to V8 and its length reset to zero. This gave the impression that more and more memory was consumed by the HTTP/2 session when it was in fact not. Fixes: nodejs/node#27416 Refs: nodejs/node#26207 PR-URL: nodejs/node#27914 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Rich Trott <[email protected]>
I've experienced an issue similar to #23116 on more recent Node versions. After a certain amount of requests are processed in the same http2 session, further requests will start throwing errors:
I've used https://gist.github.com/akukas/46f5a850bb53cd95a887df16b75fd8a4 for testing. With
maxSessionMemory
set to 1 (the minimum value), the client session will make it through ~48k requests before failing. Increasing the memory limit will increase the number of requests proportionally. In Node v10.15.3, the test script will work as expected, running indefinitely.Something else I noticed while watching the process in Task Manager/htop is that memory usage of the process remains static. Could it be that the http2 session isn't actually running out of memory, but there's just a memory usage tracking issue making it think it is?
The text was updated successfully, but these errors were encountered: