Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] high JVM consumption on springboot-aspectj LTW

Hi  Alexander,

Any suggestions on below shared aspect.. ..?

Regards,
Rajendra Bhat 

On Mon, Sep 28, 2020 at 11:14 AM Rajendra Bhat <rajhalkere@xxxxxxxxx> wrote:
Hi  Alexander,

Thanks for your quick response. 

We have added the below aspect, I believe it should not cause not much latency.

@Pointcut("execution(* xx.xx.xx.xx.rest.customfilter.doFilter"

+ "(javax.servlet.ServletRequest,javax.servlet.ServletResponse,javax.servlet.FilterChain)) && args(request,response,filterChain) && if()")


We used "around" the advice. Advice logic as below.


HttpServletRequest req = (HttpServletRequest) request;

   

    if (!req.getRequestURI().startsWith("/admin")) {

String shadowHeader = req.getHeader("XXX");

String rugsUuidHeader = req.getHeader("XXX");

if (logger.isDebugEnabled()) {

logger.debug(shadowHeader + "--" + req.getRequestURI());

}

if (!StringUtil.isEmpty(shadowHeader)) {

xxxStore.getInstance().addContext(new xxxContext(shadowHeader));

xxxLogStore.getInstance().initializeShadowLog(xxxStore.getInstance().getContext().getCorrelationId());

} else if (!StringUtil.isEmpty(rugsUuidHeader)) {

xxxStore.getInstance().addContext(rugsUuidHeader);

}

    }

return (jointPoint.proceed());



And another aspect on @Pointcut("execution( * org.springframework.messaging.MessageChannel.send(org.springframework.messaging.Message,long)) . in


This also around advice, inside we are doing if condition and log4j logging.


Could please advise below aspect is causing 30 ms latency, something else we need to tune..?


Regards,

Rajendra Bhat


On Sat, Sep 26, 2020 at 5:43 AM Andy Clement <andrew.clement@xxxxxxxxx> wrote:
There is a patch (and github fork) here https://bugs.eclipse.org/bugs/show_bug.cgi?id=565450 that someone made that is supposed to help I think - it isn't integrated because I haven't had time to try it out and review it. If you feel like building an AspectJ to try it out, that might be more evidence we should get integrated sooner rather than later.

Andy

On Thu, 24 Sep 2020 at 20:18, Alexander Kriegisch <alexander@xxxxxxxxxxxxxx> wrote:
Hi Rajendra.

Thanks for the question and the hep dump screenshot. Compile time
weaving (CTW) would not solve your latency problem. In comparison to
load time weaving (LTW) you would only save time for class-loading
during application start-up. After LTW is done, the application's
performance should be the same as with CTW.

Memory consumption and performance impact of AspectJ are strongly
correlated with what your aspects do and how broadly they are applied to
the target classes. So I am afraid without seeing your aspect code
nobody will be able to help you. The number of aspects, pointcuts and
advice is way less relevant than scope (pointcut) and content (advice
method implementation) of the aspects as such. For example, a simple
advice like this can be potentially super expensive:

before() : call(* *(..)) {
  doSomeExpensiveLogging();
  useSomeExpensiveExternalResource();
}

Why? Because it would globally apply to each method call in your whole
application. This would be just as slow as if without AOP you would add
those method calls to each place in your code before calling methods. In
most cases it is not AspectJ as such which causes huge overhead (even
though both the runtime and the weaver of course consume a few
resources, which usually is no problem, but what the aspect does and how
many times. Hence, the problem usually sits in front of the keyboard,
even though it is of course possible that there is a memory leak or
other problem in AspectJ.

Bottom line: Please provide more information, especially full aspect
code. aop.xml would also be nice.

Regards
--
Alexander Kriegisch
https://scrum-master.de


Rajendra Bhat schrieb am 25.09.2020 09:36 (GMT +07:00):

> we observed around 10% latency overhead after adding aspectj LTW.
> during the heap dump I observed lot memory consumption related to the
> aspectj.
>
> Around 400 MB consumed by Aspecj, I have added 2 to 3 inteception.
>
> hereby attached heap dump details.
>
> please advise how to overcome on this..? We cannot use compile-time
> weaving, because we adding aspect on the external jar.
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/aspectj-users


--
Thanks and
Regards

Rajendra Bhat


--
Thanks and
Regards

Rajendra Bhat

Back to the top