Hi,
when a lot of threads attack my JCS cache some threads get locked waiting for the verifyCache() operation. It seems that it's because my JCS log level is debug, at least is what I have read in some post. I want to change this log level from debug to error but I am unable to do that.
My log4j.properties is:
log4j.rootLogger=ERROR, stdout, R
log4j.category.org.apache.jcs=ERROR
log4j.category.org.apache.jcs.config=ERROR
log4j.category.org.apache.jcs.engine=ERROR
log4j.category.org.apache.jcs.engine.CacheEventQueueFactory=ERROR
log4j.category.org.apache.jcs.auxiliary.disk.jdbc=DEBUG
log4j.category.org.apache.jcs.auxiliary.disk=ERROR
log4j.category.org.apache.jcs.auxiliary.remote=ERROR
log4j.category.org.apache.jcs.auxiliary.lateral=ERROR
log4j.category.org.apache.jcs.utils.struct=ERROR
log4j.category.org.apache.jcs.utils.threadpool=ERROR
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%d - %5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=logfile.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d - %p (%F:%L) - %m%n
but I still see DEBUG messages in the log file like the following ones:
2010-07-21 18:02:13,167 - DEBUG [AJPRequestHandler-RMICallHandler-58] (LRUMemoryCache.java:627) - verifycache: checking via keysets!
2010-07-21 18:02:13,168 - DEBUG [AJPRequestHandler-RMICallHandler-58] (DoubleLinkedList.java:120) - returning first node
2010-07-21 18:02:13,168 - DEBUG [AJPRequestHandler-RMICallHandler-58] (DoubleLinkedList.java:120) - returning first node
2010-07-21 18:02:13,169 - DEBUG [AJPRequestHandler-RMICallHandler-58] (DoubleLinkedList.java:120) - returning first node
2010-07-21 18:02:13,169 - DEBUG [AJPRequestHandler-RMICallHandler-58] (DoubleLinkedList.java:120) - returning first node
2010-07-21 18:02:13,169 - DEBUG [AJPRequestHandler-RMICallHandler-58] (DoubleLinkedList.java:120) - returning first node
2010-07-21 18:02:13,170 - DEBUG [AJPRequestHandler-RMICallHandler-58] (DoubleLinkedList.java:120) - returning first node
2010-07-21 18:02:13,166 - DEBUG [AJPRequestHandler-HTTPThreadGroup-56] (CompositeCache.java:456) - get: key = 307-1-messages, localOnly = false
2010-07-21 18:02:13,170 - DEBUG [AJPRequestHandler-RMICallHandler-58] (DoubleLinkedList.java:120) - returning first node
2010-07-21 18:02:13,171 - DEBUG [AJPRequestHandler-RMICallHandler-58] (DoubleLinkedList.java:120) - returning first node
So this make me believe that log level for jcs is still the same (DEBUG)
Here is what I see in thread dump:
---------------------------------------------------------------------------------------------
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:260)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
- locked <0x343c9320> (a java.io.BufferedOutputStream)
at java.io.PrintStream.write(PrintStream.java:432)
- locked <0x343c9300> (a java.io.PrintStream)
at java.io.PrintStream.write(PrintStream.java:430)
- locked <0x3496d910> (a com.evermind.io.TimestampedPrintStream)
at com.evermind.io.ThreadsPrintStream.write(ThreadsPrintStream.java:251)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272)
at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:276)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:122)
- locked <0x355e7fb8> (a java.io.OutputStreamWriter)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212)
at org.apache.log4j.helpers.QuietWriter.flush(QuietWriter.java:58)
at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:316)
at org.apache.log4j.WriterAppender.append(WriterAppender.java:160)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
- locked <0x355edcc8> (a org.apache.log4j.ConsoleAppender)
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
at org.apache.log4j.Category.callAppenders(Category.java:206)
- locked <0x355ecf38> (a org.apache.log4j.spi.RootLogger)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.log(Category.java:856)
at org.apache.commons.logging.impl.Log4JLogger.debug(Log4JLogger.java:177)
at org.apache.jcs.utils.struct.DoubleLinkedList.getFirst(DoubleLinkedList.java:120)
- locked <0x4f127568> (a org.apache.jcs.utils.struct.DoubleLinkedList)
at org.apache.jcs.engine.memory.lru.LRUMemoryCache.verifyCache(LRUMemoryCache.java:641)
at org.apache.jcs.engine.memory.lru.LRUMemoryCache.get(LRUMemoryCache.java:311)
- locked <0x4f1274d0> (a org.apache.jcs.engine.memory.lru.LRUMemoryCache)
at org.apache.jcs.engine.control.CompositeCache.get(CompositeCache.java:462)
at org.apache.jcs.engine.control.CompositeCache.get(CompositeCache.java:423)
at org.apache.jcs.access.CacheAccess.get(CacheAccess.java:190)
Could someone tell me why this is happening or how I specify corretly the log level? or this is not the problem?
thanks,
jv