[tor-bugs] #25161 [Metrics/CollecTor]: Fix any memory problem caused by number of log files to be imported by the webstats module

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu Feb 22 08:54:14 UTC 2018


#25161: Fix any memory problem caused by number of log files to be imported by the
webstats module
-------------------------------+-----------------------------------
 Reporter:  karsten            |          Owner:  iwakeh
     Type:  defect             |         Status:  needs_information
 Priority:  Medium             |      Milestone:
Component:  Metrics/CollecTor  |        Version:
 Severity:  Normal             |     Resolution:
 Keywords:                     |  Actual Points:
Parent ID:                     |         Points:
 Reviewer:                     |        Sponsor:
-------------------------------+-----------------------------------

Comment (by karsten):

 So, after moving all log files for virtual host `dist.torproject.org` out
 of the way, I ran the following bulk import:

 {{{
 2018-02-21 19:41:30,021 INFO o.t.c.c.CollecTorMain:66 Starting webstats
 module of CollecTor.
 [...]
 2018-02-21 23:01:54,276 DEBUG o.t.d.l.WebServerAccessLogLine:143
 Unmatchable line: '[scrubbed by karsten]'.
 java.lang.OutOfMemoryError: GC overhead limit exceeded
         at java.util.HashMap.newNode(HashMap.java:1747)
         at java.util.HashMap.putVal(HashMap.java:642)
         at java.util.HashMap.put(HashMap.java:612)
         at
 java.time.format.DateTimeParseContext.setParsedField(DateTimeParseContext.java:365)
         at
 java.time.format.DateTimeFormatterBuilder$OffsetIdPrinterParser.parse(DateTimeFormatterBuilder.java:3381)
         at
 java.time.format.DateTimeFormatterBuilder$CompositePrinterParser.parse(DateTimeFormatterBuilder.java:2208)
         at
 java.time.format.DateTimeFormatter.parseUnresolved0(DateTimeFormatter.java:2010)
         at
 java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1939)
         at
 java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
         at java.time.ZonedDateTime.parse(ZonedDateTime.java:597)
         at
 org.torproject.descriptor.log.WebServerAccessLogLine.makeLine(WebServerAccessLogLine.java:129)
         at
 org.torproject.collector.webstats.SanitizeWeblogs.lambda$lineStream$7(SanitizeWeblogs.java:192)
         at
 org.torproject.collector.webstats.SanitizeWeblogs$$Lambda$34/783273584.apply(Unknown
 Source)
         at
 java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
         at java.util.Iterator.forEachRemaining(Iterator.java:116)
         at
 java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
         at
 java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
         at
 java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
         at
 java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
         at
 java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
         at
 java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
         at
 org.torproject.collector.webstats.SanitizeWeblogs.lineStream(SanitizeWeblogs.java:193)
         at
 org.torproject.collector.webstats.SanitizeWeblogs.lambda$findCleanWrite$1(SanitizeWeblogs.java:111)
         at
 org.torproject.collector.webstats.SanitizeWeblogs$$Lambda$15/1716312251.apply(Unknown
 Source)
         at
 java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267)
         at
 java.util.TreeMap$ValueSpliterator.forEachRemaining(TreeMap.java:2897)
         at
 java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
         at
 java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:291)
         at
 java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731)
         at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
         at
 java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
         at
 java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
 }}}

 I screwed up the `top` command and monitored an earlier process ID that
 was long gone when I started this run, so I can't say anything about
 memory usage. But it looks like we did run out of memory there.

 I'd say let's wait for #25317 and then try again with all logs. It might
 have an impact.

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/25161#comment:19>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list