On 16/05/2009, at 11:07 PM, Adam Kocoloski wrote:

No, I don't believe so. ibrowse accepts a {stream_to, pid()} option. It accumulates packets until it reaches a threshold configurable by {stream_chunk_size, integer()} (default 1MB), then sends the data to the Pid. I don't think ibrowse is writing to disk at any point in the process. We do see that when streaming really large attachments, ibrowse becomes the biggest memory user in the emulator.

This is what I thought was happening, which means that with small documents with many attachments (say > 1Mb) you could potentially end up with masses of open connections representing data promises that are only forced at checkpoint time, so that's not scalable. I think the number of open ibrowse connections (which I see doesn't neccessariy match the number of unforced promises), needs to be an input to the checkpoint decision.

ibrowse does offer a {save_response_to_file, boolean()|filename()} option that we could possibly leverage.

That sounds like a better idea.

Are you keeping an eye on the memory usage? I think an out of memory error can trigger this sudden death in Erlang.

Not a memory failure - it happens at the same place with either 1 or 1.5G. Once again I have a repeatable failure that would normally be random :/ I'm just wondering how to debug it.

Antony Blakey
--------------------------
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

A priest, a minister and a rabbi walk into a bar. The bartender says "What is this, a joke?"


Reply via email to