-
-
Notifications
You must be signed in to change notification settings - Fork 14
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
Memory pressure and streaming received DICOM content to disk #39
Comments
Hi Richard! Now, regarding your questions (although they might have been answered by the above!):
|
Thanks for that and the recent PR, we're keen to look at this as it should help a lot with memory pressure and stability. To clarify re. the last point about fragments - if a dataset did not use fragments for its image data, is there still the possibility for a piece of data of arbitrarily large size to be received? |
Hi @richard-viney, |
I've run into situations where large DICOMs being C-STORE'd cause the container running Node.js + dcmjs-dimse to run out of memory. This appears to be because the whole DICOM dataset is stored in memory, which is understandable because it makes the implementation and interface simpler, but it also means that it's very easy to crash the server running dcmjs-dimse simply by sending it a large enough DICOM! (Or likely also by sending a smaller number of medium-size DICOMs in parallel).
One solution would be to stream received data straight to a DICOM file on disk, thus avoiding OOM problems, but I'm not currently familiar enough with the DIMSE protocol to know how difficult this would be to implement. I do recall seeing some kind of streaming support go into dcmjs a while back, but I never worked with it directly myself and also don't know if it covered streaming writes.
A few related questions:
The text was updated successfully, but these errors were encountered: