Hi,
I've done some stress testing on Sling, and I consistently get a Too
many open files error after about 850 requests, when I run an ESP
script.
Seems there's an inputstream that is not being closed somewhere in the
script handler. The stress test is currently run in only one thread
(one concurrent request).
The script file is (currently) reduced to this:
<%="rendering"%>
I used a more complicated script file earlier, and still 850 requests
seemed to be the magic limit.
cat /proc/sys/fs/file-max on my system reports 359047, so there should
be plenty of file handles for Sling to use.
Stack trace:
14.04.2008 17:22:03 *ERROR* o.a.s.c.i.SlingMainServlet: service:
Uncaught SlingException
java.io.FileNotFoundException:
/usr/local/resin-3.1.1/sling/jackrabbit/workspaces/default/blobs/dc/8e/9c1ccf814774bb9c44ba49453cdc/%7bhttp%3a%2f%2fwww.jcp.org%2fjcr%2f1.0%7ddata.0.bin
(Too many open files)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at
org.apache.jackrabbit.util.LazyFileInputStream.open(LazyFileInputStream.java:91)
at
org.apache.jackrabbit.util.LazyFileInputStream.read(LazyFileInputStream.java:180)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.read(BufferedReader.java:157)
at java.io.FilterReader.read(FilterReader.java:48)
at java.io.PushbackReader.read(PushbackReader.java:73)
at
org.apache.sling.scripting.javascript.io.EspReader.doRead(EspReader.java:399)
at
org.apache.sling.scripting.javascript.io.EspReader.read(EspReader.java:296)
at
org.mozilla.javascript.TokenStream.fillSourceBuffer(TokenStream.java:1351)
at org.mozilla.javascript.TokenStream.getChar(TokenStream.java:1238)
at org.mozilla.javascript.TokenStream.getToken(TokenStream.java:304)
at org.mozilla.javascript.Parser.peekToken(Parser.java:166)
at org.mozilla.javascript.Parser.parse(Parser.java:360)
at org.mozilla.javascript.Parser.parse(Parser.java:336)
at org.mozilla.javascript.Context.compileImpl(Context.java:2322)
at org.mozilla.javascript.Context.compileReader(Context.java:1310)
at org.mozilla.javascript.Context.compileReader(Context.java:1282)
at org.mozilla.javascript.Context.evaluateReader(Context.java:1224)
at
org.apache.sling.scripting.javascript.RhinoJavaScriptEngine.eval(RhinoJavaScriptEngine.java:94)
at
org.apache.sling.scripting.resolver.impl.DefaultSlingScript.call(DefaultSlingScript.java:134)
at
org.apache.sling.scripting.resolver.impl.DefaultSlingScript.eval(DefaultSlingScript.java:106)
at
org.apache.sling.scripting.resolver.impl.DefaultSlingScript.service(DefaultSlingScript.java:206)
at
org.apache.sling.core.impl.request.RequestData.service(RequestData.java:462)
at
org.apache.sling.core.impl.SlingMainServlet.processRequest(SlingMainServlet.java:420)
at
org.apache.sling.core.impl.filter.RequestSlingFilterChain.render(RequestSlingFilterChain.java:48)
at
org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:54)
at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:97)
at
org.apache.sling.core.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:52)
at
org.apache.sling.core.impl.SlingMainServlet.service(SlingMainServlet.java:274)
at
org.apache.sling.core.impl.SlingMainServlet.service(SlingMainServlet.java:172)
at
org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90)
at
org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:109)
at
org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
at
org.apache.sling.launcher.webapp.SlingServlet.service(SlingServlet.java:196)
at
com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
at
com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:175)
at
com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:240)
at
com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:263)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:477)
at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:600)
at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:522)
at java.lang.Thread.run(Thread.java:619)
--
Vidar S. Ramdal <[EMAIL PROTECTED]> - http://www.idium.no
Akersgata 16, N-0158 Oslo, Norway