it was perhaps something to do with the cache, but i'm talking about some discussion I only vaguely remember, that involved setting the chunked flag Jörg mentioned, on an UrlConnection object, not something to do with our output.
On Nov 15, 2010, at 20:32, Jan Haderka wrote: > > afaik chunked encoding was a problem for cache not for activation. > > http://jira.magnolia-cms.com/browse/MAGNOLIA-1996 > > > On Nov 15, 2010, at 8:30 PM, Grégory Joseph wrote: > >> >> Jan, didn't we look into chunking once in the past, and had problems with it >> ? Or was it not in relation with activation ? >> Otherwise, I guess the improvement's fine, as long as it can be turned off, >> in case someone runs activation through a proxy or some odd http server ? >> >> -g >> >> On Nov 15, 2010, at 17:57, Jörg von Frantzius wrote: >> >>> Hi, >>> >>> we received a heap dump from our client, where there is a thread holding >>> 260GB of memory while trying to activating some seemingly large content: >>> at java.io.FileInputStream.readBytes([BII)I (Native Method) >>> at java.io.FileInputStream.read([B)I (FileInputStream.java:177) >>> at >>> org.apache.commons.io.IOUtils.copyLarge(Ljava/io/InputStream;Ljava/io/OutputStream;)J >>> (IOUtils.java:1025) >>> at >>> org.apache.commons.io.IOUtils.copy(Ljava/io/InputStream;Ljava/io/OutputStream;)I >>> (IOUtils.java:999) >>> at >>> info.magnolia.module.exchangesimple.Transporter.transport(Ljava/net/HttpURLConnection;Linfo/magnolia/module/exchangesimple/ActivationContent;)V >>> (Transporter.java:134) >>> at >>> info.magnolia.module.exchangesimple.SimpleSyndicator.activate(Linfo/magnolia/cms/exchange/Subscriber;Linfo/magnolia/module/exchangesimple/ActivationContent;)Ljava/lang/String; >>> (SimpleSyndicator.java:173) >>> at info.magnolia.module.exchangesimple.SimpleSyndicator$2.run()V >>> (SimpleSyndicator.java:120) >>> at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run()V (Unknown >>> Source) >>> at java.lang.Thread.run()V (Thread.java:662) >>> >>> <opened.gif> Accumulated Objects >>> >>> Class Name Shallow Heap Retained Heap Percentage >>> <i3.gif> >>> • java.lang.Thread @ 0x7fef5c1cb820 Thread-8694 >>> 176 268.476.352 33,87% >>> <corner.gif><i5.gif> >>> • sun.net.www.http.PosterOutputStream @ 0x7fef64353bc8 >>> 40 268.435.520 33,87% >>> <empty.gif><corner.gif><i15.gif> >>> • byte[268435456] @ 0x7fef78870000 >>> --mgnlExchange-cfc93688d385..content-disposition: form-data; >>> name="exchange_3d9b7a32-16b6-493b-a80c-77374632719f1252654589289893304.xml.gz"; >>> >>> filename="exchange_3d9b7a32-16b6-493b-a80c-77374632719f1252654589289893304.xml.gz"..content-type: >>> application/octet... >>> 268.435.480 268.435.480 33,87% >>> It seems that PosterOutputStream, being a ByteArrayOutputStream by >>> inheritance, will buffer the whole activation request in memory. In >>> addition, by looking at the Magnolia code, it seems that for a single >>> activation, this will happen once for every subscriber. So that's going to >>> put a lot of load on the GC when a single large binary is activated, or >>> even worse, when several users are simultaneously activating large >>> binaries. >>> >>> There has been a similar discussion here earlier: >>> http://www.mail-archive.com/user-l...@magnolia-cms.com/msg01809.html, where >>> Jan was wondering why a ByteArrayOutputStream was used by >>> java.net.Connection, resulting in the OOME for large activations. The >>> problem could be avoided if "chunked transfer coding" was used during the >>> activation requests from author to public servers. >>> >>> I think it would be really great if chunking was used reliably, since >>> currently system stability will become at danger with large binaries. So I >>> started digging a bit. >>> >>> There is a method java.net.HttpURLConnection.setChunkedStreamingMode(int) >>> to enable chunking, and to me it seems that this needs explicit invocation >>> in order to get chunking to happen, i.e. I don't think that chunking can be >>> enabled by means of some configuration. The method's javadoc says that the >>> request could fail if the server does not support chunking. RFC 2616, on >>> the other hand, says that 'All HTTP/1.1 applications MUST be able to >>> receive and decode the "chunked" transfer-coding'. >>> >>> So if the Magnolia code would always invoke >>> HttpURLConnection.setChunkedStreamingMode(int), this would only add the >>> requirement of a HTTP/1.1 capable server being used for the public >>> instances. I'd think that this shouldn't be a big problem? Alternatively, >>> there could be a fallback to non-chunked mode in case of failure. >>> >>> What do you think of this improvement? >>> >>> Regards, >>> Jörg >>> >>> >>> -- >>> Dipl. inf. Jörg von Frantzius, System Architect >>> Email mailto:joerg.frantz...@aperto.de >>> Phone +49 30 283921-318 >>> Fax +49 30 283921-29 >>> Aperto AG - In der Pianofabrik >>> Chausseestraße 5, D-10115 Berlin-Mitte >>> Web http://www.aperto.de >>> HRB 77049, AG Berlin Charlottenburg >>> Vorstand: Dirk Buddensiek >>> >>> >>> ---------------------------------------------------------------- >>> For list details see >>> http://www.magnolia-cms.com/home/community/mailing-lists.html >>> To unsubscribe, E-mail to: <dev-list-unsubscr...@magnolia-cms.com> >>> ---------------------------------------------------------------- >> >> >> >> ---------------------------------------------------------------- >> For list details see >> http://www.magnolia-cms.com/home/community/mailing-lists.html >> To unsubscribe, E-mail to: <dev-list-unsubscr...@magnolia-cms.com> >> ---------------------------------------------------------------- > > - > Best regards, > > Jan Haderka, PhD. > Magnolia International Ltd. > http://www.magnolia-cms.com > > http://twitter.com/magnolia_cms > http://facebook.com/Magnolia > -------------------------------------- > Magnolia® - Simple Open-Source Content Management > > > > ---------------------------------------------------------------- > For list details see > http://www.magnolia-cms.com/home/community/mailing-lists.html > To unsubscribe, E-mail to: <dev-list-unsubscr...@magnolia-cms.com> > ---------------------------------------------------------------- ---------------------------------------------------------------- For list details see http://www.magnolia-cms.com/home/community/mailing-lists.html To unsubscribe, E-mail to: <dev-list-unsubscr...@magnolia-cms.com> ----------------------------------------------------------------