Hi, I believe that implementing zero copy[1] to transfer static files would improve the performance significantly rather than copying it through the user space.
[1]http://www.ibm.com/developerworks/library/j-zerocopy/ <http://www.ibm.com/developerworks/library/j-zerocopy/> *Ayyoob Hamza* *Software Engineer* WSO2 Inc.; http://wso2.com email: ayy...@wso2.com cell: +94 77 1681010 <%2B94%2077%207779495> On Thu, Jul 16, 2015 at 3:57 PM, Manuranga Perera <m...@wso2.com> wrote: > one more improved we can easily do, is to respond to "If-Modified-Since". > this will reduce the size of requests we have to send to subsequent calls. > > On Thu, Jul 16, 2015 at 1:18 PM, Rasika Perera <rasi...@wso2.com> wrote: > >> Hi, >> >> Please review and merge fix[1] for public jira[2]. Did a load balance >> test using 10 threads; issue is still seems to exist even though the fix[1] >> improved the performance of the stream out (average server response time is >> still growing). >> >> IMO unified UI framework should not serve static type files(eg. images, >> js, css ..etc); instead the container itself must be optimized to do the >> job. Since we are using virtual paths here; simply escaping static file >> serving from the framework would not be possible. >> >> Virtual Path: {context}/public/{unit-name}/{resource-path} >> Real Path: {context}/units/{unit-name}/public/{resources-path} >> >> Virtual Path: >> https://localhost:9443/iotserver/public/arduino/images/arduino.png >> Real Path: https://localhost:9443/iotserver >> /units/arduino/public/images/arduino.png >> >> As per offline discussion, in order to solve this Manuranga is writing a >> front layer in java for the UUI framework. >> >> Thank you >> >> [1] https://github.com/wso2/jaggery/pull/130 >> [2] https://wso2.org/jira/browse/JAGGERY-408 >> >> On Wed, Jul 15, 2015 at 12:13 PM, Manuranga Perera <m...@wso2.com> wrote: >> >>> as per our off-line debugging session, issues seems to be in Jaggery >>> Stream print [1] function. Rasika will look into improving scream copy java >>> method and check. >>> >>> >>> [1] >>> https://github.com/wso2/jaggery/blob/master/components/jaggery-core/org.jaggeryjs.jaggery.core/src/main/java/org/jaggeryjs/jaggery/core/manager/CommonManager.java >>> >>> On Wed, Jul 15, 2015 at 3:40 AM, Manuranga Perera <m...@wso2.com> wrote: >>> >>>> Let's take a JFR snapshot and see what's really taking time. I am >>>> guessing its reading of the definition files. We can cache the unit >>>> definitions if that's the case. >>>> On 15 Jul 2015 00:24, "Rasika Perera" <rasi...@wso2.com> wrote: >>>> >>>>> Hi All, >>>>> >>>>> We have setup a Jaggery App written using Unified UI sharable >>>>> components framework on top of a WSO2 server pack. >>>>> >>>>> When increasing the number of concurrent users we are experiencing a >>>>> huge performance drop in the server. In the middle of an internal training >>>>> session we tried to access the Jaggery Application using 9-10 concurrent >>>>> browser terminals. Server tends to hits 100% CPU usage when trying to >>>>> accessing webapp. >>>>> >>>>> At the server side we are getting following error intermittently; >>>>> >>>>> [2015-07-14 23:31:58,270] ERROR >>>>>> {org.jaggeryjs.jaggery.core.manager.WebAppManager} - >>>>>> org.mozilla.javascript.WrappedException: Wrapped >>>>>> org.jaggeryjs.scriptengine.exceptions.ScriptException: >>>>>> org.apache.catalina.connector.ClientAbortException: java.io.IOException: >>>>>> Broken pipe (/iotserver/lib/fuse-router.js#92) >>>>>> org.jaggeryjs.scriptengine.exceptions.ScriptException: >>>>>> org.mozilla.javascript.WrappedException: Wrapped >>>>>> org.jaggeryjs.scriptengine.exceptions.ScriptException: >>>>>> org.apache.catalina.connector.ClientAbortException: java.io.IOException: >>>>>> Broken pipe (/iotserver/lib/fuse-router.js#92) >>>>> >>>>> >>>>> The thread dump of the server is attached[1]. Most of active threads >>>>> are executing "fuse.js" and "rhino" This issue is reproducible at the >>>>> local >>>>> machine when accessing concurrently. >>>>> >>>>> "http-nio-9443-exec-14" daemon prio=10 tid=0x00007fc330057000 >>>>>> nid=0x14eb runnable [0x00007fc30ae26000] >>>>>> java.lang.Thread.State: RUNNABLE >>>>>> at >>>>>> org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42) >>>>>> at >>>>>> org.jaggeryjs.rhino.iotserver.lib.c0._c_anonymous_1(/iotserver/lib/fuse.jag:6) >>>>>> at org.jaggeryjs.rhino.iotserver.lib.c0.call(/iotserver/lib/fuse.jag) >>>>>> at >>>>>> org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2430) >>>>>> at >>>>>> org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:269) >>>>>> at >>>>>> org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97) >>>>>> at >>>>>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32) >>>>>> at >>>>>> org.jaggeryjs.rhino.iotserver.lib.c0._c_anonymous_1(/iotserver/lib/fuse.jag:5) >>>>>> at org.jaggeryjs.rhino.iotserver.lib.c0.call(/iotserver/lib/fuse.jag) >>>>>> at >>>>>> org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2430) >>>>>> at >>>>>> org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:269) >>>>>> at >>>>>> org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97) >>>>>> at >>>>>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32) >>>>>> at >>>>>> org.jaggeryjs.rhino.iotserver.lib.c0._c_anonymous_1(/iotserver/lib/fuse.jag:5) >>>>>> at org.jaggeryjs.rhino.iotserver.lib.c0.call(/iotserver/lib/fuse.jag) >>>>>> at >>>>>> org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2430) >>>>>> at >>>>>> org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:269) >>>>>> at >>>>>> org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97) >>>>>> at >>>>>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32) >>>>>> at >>>>>> org.jaggeryjs.rhino.iotserver.lib.c0._c_anonymous_1(/iotserver/lib/fuse.jag:5) >>>>>> at org.jaggeryjs.rhino.iotserver.lib.c0.call(/iotserver/lib/fuse.jag) >>>>>> at >>>>>> org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2430) >>>>>> at >>>>>> org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:269) >>>>>> at >>>>>> org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97) >>>>>> at >>>>>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32) >>>>>> at >>>>>> org.jaggeryjs.rhino.iotserver.lib.c0._c_anonymous_1(/iotserver/lib/fuse.jag:5) >>>>>> at org.jaggeryjs.rhino.iotserver.lib.c0.call(/iotserver/lib/fuse.jag) >>>>>> at >>>>>> org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2430) >>>>>> at >>>>>> org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:269) >>>>>> at >>>>>> org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97) >>>>>> at >>>>>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32) >>>>>> at >>>>>> org.jaggeryjs.rhino.iotserver.lib.c0._c_anonymous_1(/iotserver/lib/fuse.jag:5) >>>>>> at org.jaggeryjs.rhino.iotserver.lib.c0.call(/iotserver/lib/fuse.jag) >>>>>> at >>>>>> org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2430) >>>>>> at >>>>>> org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:269) >>>>>> at >>>>>> org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97) >>>>>> at >>>>>> org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32) >>>>>> at >>>>>> org.jaggeryjs.rhino.iotserver.lib.c0._c_anonymous_1(/iotserver/lib/fuse.jag:5) >>>>> >>>>> >>>>> Any help to resolve this issue would be really appreciated. >>>>> >>>>> Thank you >>>>> >>>>> -- >>>>> With Regards, >>>>> >>>>> *Rasika Perera* >>>>> Software Engineer >>>>> M: +94 71 680 9060 E: rasi...@wso2.com >>>>> LinkedIn: http://lk.linkedin.com/in/rasika90 >>>>> >>>>> WSO2 Inc. www.wso2.com >>>>> lean.enterprise.middleware >>>>> >>>> >>> >>> >>> -- >>> With regards, >>> *Manu*ranga Perera. >>> >>> phone : 071 7 70 20 50 >>> mail : m...@wso2.com >>> >> >> >> >> -- >> With Regards, >> >> *Rasika Perera* >> Software Engineer >> M: +94 71 680 9060 E: rasi...@wso2.com >> LinkedIn: http://lk.linkedin.com/in/rasika90 >> >> WSO2 Inc. www.wso2.com >> lean.enterprise.middleware >> > > > > -- > With regards, > *Manu*ranga Perera. > > phone : 071 7 70 20 50 > mail : m...@wso2.com > > _______________________________________________ > Dev mailing list > Dev@wso2.org > http://wso2.org/cgi-bin/mailman/listinfo/dev > >
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev