Would an embedded Tomcat/Jetty a la Spring Boot really be considered a web application?
On 18 April 2016 at 08:56, Remko Popma <remko.po...@gmail.com> wrote: > When I finish performance testing I will add graphs to the Performance > section of the gc-free manual page so that users can make an informed > decision. (The below one is an example.) > > So far, it seems that even with the garbage-free logging enabled, > synchronous logging throughput (the green line) is usually slightly faster > than it was with 2.5 (the purple line). So I think making garbage-free the > default is acceptable. Also, users who care about logging throughput will > be logging asynchronously, not synchronously: this scales much better with > the number of application threads. > > > > > > On Mon, Apr 18, 2016 at 9:57 PM, Mikael Ståldal <mikael.stal...@magine.com > > wrote: > >> Is it wise to enable by default given that "multi-threaded applications >> that use synchronous logging may see worse performance"? >> >> On Mon, Apr 18, 2016 at 2:22 PM, Remko Popma <remko.po...@gmail.com> >> wrote: >> >>> Enabled, except for web apps; for those log4j will be low garbage. >>> >>> See the first paragraph of the Configuration section in the manual page. >>> >>> Please let me know if this is not clear. (The fact that you asked means >>> this probably needs improvement...) >>> >>> Sent from my iPhone >>> >>> On 2016/04/18, at 20:18, Mikael Ståldal <mikael.stal...@magine.com> >>> wrote: >>> >>> Will garbage-free logging be enabled or disabled by default? >>> >>> On Mon, Apr 18, 2016 at 2:58 AM, Remko Popma (JIRA) <j...@apache.org> >>> wrote: >>> >>>> >>>> [ >>>> https://issues.apache.org/jira/browse/LOG4J2-1297?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15245018#comment-15245018 >>>> ] >>>> >>>> Remko Popma commented on LOG4J2-1297: >>>> ------------------------------------- >>>> >>>> TODO allocate many temporary objects -> allocate temporary objects >>>> >>>> TODO multi-threaded applications that use synchronous logging may see >>>> worse performance: the lock that was previously only around the IO >>>> operation is widened to include the text formatting and conversion to >>>> bytes. -> _synchronous_ logging performance may be worse for multi-threaded >>>> applications in this mode due to synchronization on the shared buffer. If >>>> your application is multi-threaded and logging performance is important, >>>> consider using Async Loggers. >>>> >>>> TODO Caution: Only dates in the predefined formats are garbage-free -> >>>> Caution: Only the predefined date formats are garbage-free >>>> >>>> TODO "(Note that Log4j may call toString() on message and parameter >>>> objects when garbage-free logging is disabled because system property >>>> log4j2.enable.threadlocals is set to "false".)" -> Log4j may call >>>> toString() on message and parameter objects when garbage-free logging is >>>> disabled (when system property log4j2.enable.threadlocals is set to >>>> "false".) >>>> >>>> TODO "made an effort to make logging code garbage-free" -> "made an >>>> effort to make logging garbage-free" >>>> >>>> >>>> > Document "gc-free" configuration and performance >>>> > ------------------------------------------------ >>>> > >>>> > Key: LOG4J2-1297 >>>> > URL: >>>> https://issues.apache.org/jira/browse/LOG4J2-1297 >>>> > Project: Log4j 2 >>>> > Issue Type: New Feature >>>> > Components: Documentation >>>> > Affects Versions: 2.5 >>>> > Reporter: Remko Popma >>>> > Assignee: Remko Popma >>>> > Fix For: 2.6 >>>> > >>>> > Attachments: log4j-2.5-FlightRecording.png, >>>> log4j-2.6-FlightRecording.png >>>> > >>>> > >>>> > Update the site with a description of which configurations are >>>> GC-free (i.e., that don't create temporary objects in steady running >>>> state). >>>> > Currently that means >>>> > * Loggers are all asynchronous (Log4jContextSelector is set to >>>> org.apache.logging.log4j.core.async.AsyncLoggerContextSelector). >>>> > * The configuration does not contain a <Properties> section. >>>> > * The "steady-state" appenders are either RandomAccessFile or >>>> RollingRandomAccessFile Appenders (logging to any other appender will cause >>>> temporary objects to be created - including ConsoleAppender). >>>> > * The Layout is a PatternLayout that uses one of the pre-defined date >>>> formats, does not have any regular expression replacements, and does not >>>> have lookups (TODO: may need to restrict this further). >>>> > * The thread name is cached (this is the [default| >>>> https://issues.apache.org/jira/browse/LOG4J2-467]). Running with >>>> -DAsyncLogger.ThreadNameStrategy=UNCACHED will create garbage. >>>> > * In user code, when logging a parameterized message, the number of >>>> parameters is no more than ... (TBD pending discussion in LOG4J2-1278). >>>> > * In user code, when logging a parameterized message, parameters of >>>> primitive type are boxed in a reused StringBuilder (Log4j provides a >>>> utility to make this relatively painless). >>>> > Even with the above restrictions, Log4j may occasionally create >>>> garbage: >>>> > * Initially StringBuilders are presized to 128 characters. They may >>>> grow for larger messages (contributing to garbage in Old Gen). If the >>>> StringBuilder grows beyond 512 characters it is trimmed back to 512 >>>> characters to prevent memory leaks from excessively long messages. (TODO: >>>> the resizing algorithm is {{size = value.length * 2 + 2}}, so a better >>>> cutoff value is 518.) >>>> > * Messages containing {{"$\{"}} will be converted to a String and >>>> StrSubstitutor will be used to replace occurences of variables with their >>>> matching values. Multiple temporary objects are created during this >>>> process. >>>> > Furthermore, we need to explain that some of this functionality >>>> depends on ThreadLocals and so is disabled by default in web applications >>>> to prevent memory leaks. The page should also explain how to manually >>>> switch off the use of ThreadLocals. >>>> > Finally, the page should show a performance test comparison similar >>>> to the [performance section| >>>> http://logging.apache.org/log4j/2.x/manual/async.html#Performance] on >>>> the Async Loggers page. I'm thinking a comparison between Logback, Log4j-1, >>>> Log4j-2.0, Log4j-2.6 "classic" and Log4j-2.6 "gc-free" would be ideal. >>>> >>>> >>>> >>>> -- >>>> This message was sent by Atlassian JIRA >>>> (v6.3.4#6332) >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org >>>> For additional commands, e-mail: log4j-dev-h...@logging.apache.org >>>> >>>> >>> >>> >>> -- >>> [image: MagineTV] >>> >>> *Mikael Ståldal* >>> Senior software developer >>> >>> *Magine TV* >>> mikael.stal...@magine.com >>> Grev Turegatan 3 | 114 46 Stockholm, Sweden | www.magine.com >>> >>> Privileged and/or Confidential Information may be contained in this >>> message. If you are not the addressee indicated in this message >>> (or responsible for delivery of the message to such a person), you may >>> not copy or deliver this message to anyone. In such case, >>> you should destroy this message and kindly notify the sender by reply >>> email. >>> >>> >> >> >> -- >> [image: MagineTV] >> >> *Mikael Ståldal* >> Senior software developer >> >> *Magine TV* >> mikael.stal...@magine.com >> Grev Turegatan 3 | 114 46 Stockholm, Sweden | www.magine.com >> >> Privileged and/or Confidential Information may be contained in this >> message. If you are not the addressee indicated in this message >> (or responsible for delivery of the message to such a person), you may >> not copy or deliver this message to anyone. In such case, >> you should destroy this message and kindly notify the sender by reply >> email. >> > > -- Matt Sicker <boa...@gmail.com>