Critical performace degradation in concurrent multi-user scenario

Hi,

We are using java aspose.slides version 16.1.0, and we are experiencing severe performance degradation when multiple users are using our powerpoint generation. (basically the server goes to a crawl for a few hours with ppt generation time taking up to 5 hours - from 1 min). While this was happening, general slowness is reported by all our users

The logs we collected show multiple threads executing as follow : (stack trace below for different threads)

    Stack Trace
        java.text.Collator.setStrength(Collator.java:405)
        com.aspose.slides.ms.pbdb106a0.pa5e0ff62.f.do(Unknown Source)
        com.aspose.slides.ms.pbdb106a0.av.do(Unknown Source)
        com.aspose.slides.ms.pbdb106a0.av.hashCodeT(Unknown Source)
        com.aspose.slides.Collections.Generic.Dictionary.tryGetValue(Unknown Source)
        com.aspose.slides.vd.do(Unknown Source)
        com.aspose.slides.bir.int(Unknown Source)
        com.aspose.slides.bir.static(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.if(Unknown Source)
        com.aspose.slides.TextFrame.do(Unknown Source)
        com.aspose.slides.TextFrame.do(Unknown Source)
        com.aspose.slides.TextFrame.goto(Unknown Source)
        com.aspose.slides.bv.do(Unknown Source)
        com.aspose.slides.yg.do(Unknown Source)
        com.aspose.slides.yg.do(Unknown Source)
        com.aspose.slides.eb.do(Unknown Source)
        com.aspose.slides.bbb.do(Unknown Source)
        com.aspose.slides.auq.do(Unknown Source)
        com.aspose.slides.auq.do(Unknown Source)
        com.aspose.slides.Presentation.do(Unknown Source)
        com.aspose.slides.Presentation.do(Unknown Source)
        com.aspose.slides.Presentation.do(Unknown Source)
        com.aspose.slides.Presentation.save(Unknown Source)

  Stack Trace
        java.text.RuleBasedCollator.getCollationKey(RuleBasedCollator.java:614)
        com.aspose.slides.ms.pbdb106a0.pa5e0ff62.f.do(Unknown Source)
        com.aspose.slides.ms.pbdb106a0.av.do(Unknown Source)
        com.aspose.slides.ms.pbdb106a0.av.hashCodeT(Unknown Source)
        com.aspose.slides.Collections.Generic.Dictionary.tryGetValue(Unknown Source)
        com.aspose.slides.vd.do(Unknown Source)
        com.aspose.slides.bir.int(Unknown Source)
        com.aspose.slides.bir.static(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.<init>(Unknown Source)
        com.aspose.slides.TextFrame.do(Unknown Source)
        com.aspose.slides.AutoShape.try(Unknown Source)
        com.aspose.slides.Shape.getFrame(Unknown Source)
        com.aspose.slides.Shape.getHeight(Unknown Source)


Stack Trace
java.lang.StringBuffer.setLength(StringBuffer.java:1515)
java.text.RuleBasedCollator.getCollationKey(RuleBasedCollator.java:622)
com.aspose.slides.ms.pbdb106a0.pa5e0ff62.f.do(Unknown Source)
com.aspose.slides.ms.pbdb106a0.av.do(Unknown Source)
com.aspose.slides.ms.pbdb106a0.av.hashCodeT(Unknown Source)
com.aspose.slides.Collections.Generic.Dictionary.tryGetValue(Unknown Source)
com.aspose.slides.vd.do(Unknown Source)
com.aspose.slides.bir.int(Unknown Source)
com.aspose.slides.bir.static(Unknown Source)
com.aspose.slides.bhw.do(Unknown Source)
com.aspose.slides.bhw.do(Unknown Source)
com.aspose.slides.bhw.do(Unknown Source)
com.aspose.slides.bhw.(Unknown Source)
com.aspose.slides.TextFrame.do(Unknown Source)
com.aspose.slides.AutoShape.try(Unknown Source)
com.aspose.slides.Shape.getFrame(Unknown Source)
com.aspose.slides.Shape.getHeight(Unknown Source)

    Stack Trace
        java.text.Collator.setStrength(Collator.java:405)
        com.aspose.slides.ms.pbdb106a0.pa5e0ff62.f.do(Unknown Source)
        com.aspose.slides.ms.pbdb106a0.av.do(Unknown Source)
        com.aspose.slides.ms.pbdb106a0.av.hashCodeT(Unknown Source)
        com.aspose.slides.Collections.Generic.Dictionary.tryGetValue(Unknown Source)
        com.aspose.slides.vd.do(Unknown Source)
        com.aspose.slides.bir.int(Unknown Source)
        com.aspose.slides.bir.static(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.do(Unknown Source)
        com.aspose.slides.bhw.<init>(Unknown Source)
        com.aspose.slides.TextFrame.do(Unknown Source)
        com.aspose.slides.AutoShape.try(Unknown Source)
        com.aspose.slides.Shape.getFrame(Unknown Source)
        com.aspose.slides.Shape.getHeight(Unknown Source)

Many thanks.

@alina4aspose,

I have observed your comments. Can you please try to use Aspose.Slides latest version 18.5 on your end and if there is still an issue than please share working sample project along with sample presentation so that we may further investigate to help you out. I also like to inform that as per policy support is always provided based on latest version.

Hi Adnan,

Thank you for your quick response. Inspecting the logs and based on the fact that the problem only occurs in multiuser concurrent situations, it is clear for us that the problem is not related to client data.
Other people reported symptoms similar to the one described when using the java.text.Collator. Is it possible to find out if work has been done subsequent to version 16.1 on Aspose slides to avoid performance problems due to Collator synchronization ?

(See for example : multithreading - How to avoid thread blockage during concurrent sorting with a java.text.Collator? - Stack Overflow) .

Many thanks, Alina

@alina4aspose,

I have observed your comments. I regret to inform that no such work has been done to version 16.1. I also like to inform that you are using very old version and support is always provided based on new version which is 18.5. I request to you please try to use latest version and if there is still an issue than please share sample project along with source files so that we may further investigate to help you out.