Is it possible to use this 
http://www.mail-archive.com/wicket-u...@lists.sourceforge.net/msg20951.html
workaround  in the URLResourceStream constructor - similar to how it is done
in URLResourceStream#lastModifiedTime()? 



adambender wrote:
> 
> For what it is worth I saw a file being created in the URLResourceStream
> constructor at line 88 but it doesn't look like this is the source of any
> problems, its just a way to figure out how to check the lastModified time
> later on. 
> 
> While I can't claim any kind of expertise on the inner workings of Wicket
> it seems that this problem would be solved if it wasn't required to check
> the last modification time on those resources which are embedded in the
> Wicket jar. Of course I have no idea what else this would affect so it may
> not be so simple. It may also be possible to just cache the stream or the
> actual .js string for use by later requests so that it is not necessary to
> try and reload files like this from the jar every time they are requested.
> 
> For our use what we are likely going to do is pull the .js files out and
> place them where httpd can serve them and then use some url rewriting
> magic to prevent Wicket from serving them.
> 
> 
> Adam
> 
> 
> igor.vaynberg wrote:
>> 
>> i just dont see what we can do about this... we are calling
>> connection.getLastModified(), we are not creating a file, etc...
>> 
>> -igor
>> 
>> On Wed, Oct 21, 2009 at 10:18 AM, adambender <adamben...@gmail.com>
>> wrote:
>>>
>>> This issue looks like it is directly related to
>>> http://issues.apache.org/jira/browse/WICKET-438 and the access of the
>>> lastModified header. Every time a URLResourceStream is constructed the
>>> lastModified time is requested at line 85 and the number of file handles
>>> goes up by one. The solution to the jira issue indicated that upgrading
>>> the
>>> version of linux fixed the problem but it doesnt seem to be the case
>>> with OS
>>> X or Red Hat Enterprise Linux...
>>>
>>>
>>> adambender 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-tp25983047p25996646.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
>> 
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Too-Many-Files-Wicket-1.4.1-tp25983047p26001171.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

Reply via email to