where in wicket code do you see us doing new File(uri). afaik, we
always use streams and dont try to convert to a file...

-igor

On Wed, Oct 21, 2009 at 8:57 AM, adambender <adamben...@gmail.com> wrote:
>
> I was able to distill the problem down to what I think is the core issue
> here.
>
> When an AJAX Wicket page is rendered it contains a reference to two .js
> files as Igor had mentioned, the Web URLs of these files look like this:
>
> <App Context
> Root>/resources/org.apache.wicket.markup.html.WicketEventReference/wicket-event.js
> <App Context
> Root>/resources/org.apache.wicket.markup.html.WicketEventReference/wicket-ajax.js
>
> These requests are of course fielded by the Wicket filter which ends up
> trying to load the resources using the UrlResourceStream. In order to
> actually load these files Wicket gets the JAR URL for each file, converts
> them to a URIs and then passes them to the File constructor. The problem is
> that the URI that is created is opaque -
> http://www.docjar.com/docs/api/java/net/URI.html  see here for a good
> explanation  in the case of wicket-event.js the URI string is like the
> following :
>
> jar:file:/<absolute-path-tojar>/wicket-1.4.1.jar!/org/apache/wicket/markup/html/wicket-event.js
>
> It is similar for the case of wicket-ajax.js
>
> A quick glance at the File constructor shows that an opaque URL cannot be
> used to create a File as it is considered non-hierarchical. This of course
> leaves you with lots of requests to load this file, none of which can be
> completed and results in a lot of open URL connections which can never be
> closed.
>
> I guess my question is, should this loading mechanism be working because it
> doesnt seem like it could the way it is currently written? Is it possible to
> configure how Wicket finds these files embedded in the jar? Have I missed
> something?
>
>
> Adam Bender-2 wrote:
>>
>> Thanks for the explanation I think that helps shed some light... The
>> tests are actually JMeter tests driving load by emulating a web
>> browser - the application the are testing is running in Deployment
>> mode set up as though it were a production server. After a little more
>> digging I have been able to determine that is only a problem on pages
>> which use Ajax - and it looks like there is a related debug message
>> coming from an exception handler regarding the wicket-event.js file
>> not being accessible (URI is not hierarchical). This would actually
>> explain  why the problem only manifests when the JMeter tests are set
>> to request embedded assets as wicket ajax pages embed requests for
>> additional pieces of javascript - which in the case of wicket-event.js
>> are causing exceptions to be thrown and the JVM bug you mentioned is
>> probably preventing these resources from being cleaned up properly.
>>
>> Does that sound right?
>>
>> Adam
>>
>>
>> On Oct 20, 2009, at 8:41 PM, Igor Vaynberg wrote:
>>
>>> when you are requesting an embedded resource wicket needs to stream
>>> the file out of a jar, the way the jvm handles that is by creating a
>>> jar url connection object that streams the file. unfortunately, there
>>> is a bug in the jdk where the url connection does not have a close
>>> method and so wicket or any other java app cannot release the
>>> connection. this is addressed, afair, in jdk 7.
>>>
>>> i have many apps deployed in production and have not managed yet to
>>> run out of the handles with the limit set about 4K. not sure why this
>>> is different in your case. you mentioned "tests", are those unit tests
>>> and is wicket there running in deployment mode?
>>>
>>> the resource watcher, which should be disabled, will cause the handles
>>> to run out because it continuously monitors markup files for changes
>>> (hot reloading in dev mode) and everytime it checks a markup file in a
>>> jar it creates the url connection and leaks it. by default it is
>>> disabled in deployment mode but if you manually set the poll frequency
>>> in your settings it will be reenabled.
>>>
>>> -igor
>>>
>>>
>>> On Tue, Oct 20, 2009 at 4:07 PM, Adam Bender <a...@magpieti.com>
>>> wrote:
>>>> We have run with a limit as high as 10,000 files and our tests can
>>>> bring it
>>>> to the limit in 20 minutes, but that still doesn't explain why so
>>>> many
>>>> copies of the jar are needed - and only when we are also requesting
>>>> embedded
>>>> assets...
>>>>
>>>> On Oct 20, 2009, at 5:04 PM, Major Péter wrote:
>>>>
>>>>> resolution -> solution...
>>>>> Just set the ulimit in the initscript and run it with start-stop-
>>>>> daemon,
>>>>> it will make the problem disappear (but still there would be many
>>>>> open
>>>>> files...)
>>>>>
>>>>> Peter
>>>>>
>>>>> 2009-10-21 00:38 keltezéssel, Major Péter írta:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> we also had this issue, because (I think) we are running two
>>>>>> different
>>>>>> wicket application in only one glassfish domain. Our resolution
>>>>>> was,
>>>>>> that we are running now the glassfish domains with custom init
>>>>>> scripts
>>>>>> with ulimit settings. Maybe this will help for you.
>>>>>>
>>>>>> Best Regards,
>>>>>> Peter
>>>>>>
>>>>>> 2009-10-21 00:14 keltezéssel, Martin Grigorov írta:
>>>>>>>
>>>>>>> Hi Adam,
>>>>>>>
>>>>>>> You may try to debug what is the problem with
>>>>>>> https://wiki.sdn.sap.com/wiki/display/Java/JPicus
>>>>>>>
>>>>>>> El mar, 20-10-2009 a las 15:39 -0600, Adam Bender escribió:
>>>>>>>>
>>>>>>>> Greetings all,
>>>>>>>>
>>>>>>>> Recently I have been performance testing a Wicket application
>>>>>>>> (1.4.1)
>>>>>>>> and I
>>>>>>>> am running into the dreaded Too Many Files Open issue. I have
>>>>>>>> searched
>>>>>>>> the
>>>>>>>> mailing lists and most of the trouble around this issue seems
>>>>>>>> to come
>>>>>>>> from
>>>>>>>> being in DEVELOPMENT mode so I made sure we were in DEPLOYMENT
>>>>>>>> mode.
>>>>>>>> When I
>>>>>>>> run 'lsof -p xxxx | grep wicket-1.4.1.jar' I see over 1000
>>>>>>>> entries and
>>>>>>>> it's
>>>>>>>> growing monotonically. This seems really unusual - why would
>>>>>>>> wicket
>>>>>>>> need
>>>>>>>> 1000 copies of this jar open? An additional bit of weirdness
>>>>>>>> came up
>>>>>>>> when
>>>>>>>> our load tests stopped loading the embedded assets (css, js and
>>>>>>>> images)
>>>>>>>> in
>>>>>>>> each page - this seemed to cap the number of lsof entries at
>>>>>>>> 5... This
>>>>>>>> is
>>>>>>>> even weirder because our app serves these static items from httpd
>>>>>>>> without
>>>>>>>> tomcat ever knowing about them. How could our loading of
>>>>>>>> embedded items
>>>>>>>> really affect the number of file handles wicket needs?
>>>>>>>>
>>>>>>>> For completeness we are running this app on Red Hat Enterprise
>>>>>>>> Linx 5
>>>>>>>> with
>>>>>>>> Tomcat 6.0.20 and Java 1.6
>>>>>>>>
>>>>>>>> Adam
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>>
>>
>
> --
> View this message in context: 
> http://www.nabble.com/Too-Many-Files-Wicket-1.4.1-tp25983047p25995324.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to