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

Reply via email to