This is not a memory problem because, otherwise, I'll have the same problem on all client systems. It's a communication related problem between server and clients but not strictly a network problem because, otherwise, two clients, connected to the same cable would perform in the same way. Tks Tullio
> Subject: Re: Performance regression from 7 to 8 > To: users@tomcat.apache.org > From: felix.schumac...@internetallee.de > Date: Sat, 5 Mar 2016 11:13:58 +0100 > > Am 04.03.2016 um 14:19 schrieb Tullio Bettinazzi: > > Done and nothing changed. > > Any suggestion ? > It could be related to memory usage. > > Tomcat 8 can use more memory than tomcat 7 (See > https://mail-archives.apache.org/mod_mbox/tomcat-users/201602.mbox/%3ccacbju2wmw7mntevb6hwjqdfzsjpmfiuw6k_dn1u0ufh0haj...@mail.gmail.com%3E) > > So try to look at your memory consumption and adjust the limits for the > jvm accordingly. For monitoring, you can enable gc logging, or use > something like jstat, jconsole, jvisualvm, jmc or any other monitoring tool. > > Mark has worked on the memory issue and lowered consumption for newer > versions. I think they will be in the next release. > > Regards, > Felix > > Here the code. > > > > package axioma.rubik.engine.web.servlet; > > > > import java.io.*; > > import javax.servlet.ServletException; > > import javax.servlet.annotation.WebServlet; > > import javax.servlet.http.*; > > > > @WebServlet(name="Test8", description="Direct update of data", > > urlPatterns={"/Test8"}) > > public class Test8Servlet extends HttpServlet { > > > > private static final long serialVersionUID = 1L; > > > > @Override > > protected void doGet(HttpServletRequest request, HttpServletResponse > > response) throws ServletException, IOException { > > try { > > fai(response); > > } catch (Exception ex) { > > ex.printStackTrace(); > > } > > } > > > > public void fai(HttpServletResponse response) throws IOException { > > ByteArrayOutputStream bbs = new ByteArrayOutputStream(); > > BufferedOutputStream bos = new BufferedOutputStream(bbs); > > for(int i = 0; i < 400000; i++) { > > bos.write(96); > > } > > bos.flush(); > > bbs.writeTo(response.getOutputStream()); > > } > > } > > > >> Date: Fri, 4 Mar 2016 12:58:02 +0100 > >> Subject: Re: Performance regression from 7 to 8 > >> From: r...@apache.org > >> To: users@tomcat.apache.org > >> > >> 2016-03-04 12:42 GMT+01:00 Mark Thomas <ma...@apache.org>: > >> > >>> On 04/03/2016 11:17, Tullio Bettinazzi wrote: > >>>> This servlet reproduces the problem perfectly. > >>> Getting better but still some room for improvement. > >>> - You don't need to implement doPost() > >>> - You don't need to call System.gc() (or if you do look there for > >>> the problem) > >>> > >> Yes, it's on every get and will cause a major concurrency issue. > >> > >> > >>> - You do need to remove the use of the ComunicationChannelHttp and > >>> Cronometro classes (and if that fixes the problem look there > >>> for the root cause) > >>> - The try/catch in doGet() should not be necessary either > >>> > >> Also writing individual bytes is more costly even if there's some > >> buffering. > >> > >> Rémy > >> > >>> Mark > >>> > >>>> package axioma.rubik.engine.web.servlet; > >>>> > >>>> import java.io.*; > >>>> import javax.servlet.ServletException; > >>>> import javax.servlet.annotation.WebServlet; > >>>> import javax.servlet.http.*; > >>>> import axioma.rubik.engine.web.ComunicationChannelHttp; > >>>> import it.axioma.rubik.engine.Cronometro; > >>>> > >>>> @WebServlet(name="Test8", description="Direct update of data", > >>> urlPatterns={"/Test8"}) > >>>> public class Test8Servlet extends HttpServlet { > >>>> > >>>> private static final long serialVersionUID = 1L; > >>>> > >>>> @Override > >>>> protected void doPost(HttpServletRequest request, > >>> HttpServletResponse response) throws ServletException, IOException { > >>>> this.doGet(request,response); > >>>> } > >>>> > >>>> @Override > >>>> protected void doGet(HttpServletRequest request, HttpServletResponse > >>> response) throws ServletException, IOException { > >>>> try { > >>>> fai(response); > >>>> System.gc(); > >>>> } catch (Exception ex) { > >>>> ex.printStackTrace(); > >>>> } > >>>> ComunicationChannelHttp.CONTEXT_MANAGER.clean(); > >>>> } > >>>> > >>>> public void fai(HttpServletResponse response) { > >>>> Cronometro crono = new Cronometro(); > >>>> ByteArrayOutputStream bbs = new ByteArrayOutputStream(); > >>>> BufferedOutputStream bos = new BufferedOutputStream(bbs); > >>>> try { > >>>> for(int i = 0; i < 400000; i++) { > >>>> bos.write(96); > >>>> } > >>>> bos.flush(); > >>>> System.out.println("Step 1 : "+crono.elapsed()); > >>>> bbs.writeTo(response.getOutputStream()); > >>>> System.out.println("Step 1 : "+crono.elapsed()); > >>>> } catch (IOException ex) { > >>>> ex.printStackTrace(); > >>>> } > >>>> } > >>>> > >>>> } > >>>> > >>>> > >>>>> Subject: Re: Performance regression from 7 to 8 > >>>>> To: users@tomcat.apache.org > >>>>> From: ma...@apache.org > >>>>> Date: Fri, 4 Mar 2016 10:38:30 +0000 > >>>>> > >>>>> On 04/03/2016 10:24, Tullio Bettinazzi wrote: > >>>>>> The problem is all in this small piece of code > >>>>>> ByteArrayOutputStream bbs = new ByteArrayOutputStream(); > >>>>>> BufferedOutputStream bos = new BufferedOutputStream(bbs); > >>>>>> trans.eseguiTrasformazioneOut(bos); > >>>>>> try { > >>>>>> bos.flush(); > >>>>>> initReponse(xpFileTypeOut.getMimeType(), xpFilename); > >>>>>> bbs.writeTo(getOutputStream()); > >>>>>> } catch (IOException ex) { > >>>>>> Messaggi.getErrori().getLogger().error("Errore in > >>> emettiFile ", ex); > >>>>>> } > >>>>>> The yellow instruction take 100 ms in Tomcat7, quite stable on all > >>> clients, in Tomcat8 it takes from 50 ms to 4500 ms stable on a single > >>> client PC but very different from client to client. > >>>>>> Tks > >>>>>> Tullio > >>>>> I'll repeat what I said previously: > >>>>> > >>>>> Try creating the *simplest possible* web application that demonstrates > >>> the > >>>>> problem. > >>>>> > >>>>> Mark > >>>>> > >>>>>>> Subject: Re: Performance regression from 7 to 8 > >>>>>>> To: users@tomcat.apache.org > >>>>>>> From: ma...@apache.org > >>>>>>> Date: Fri, 4 Mar 2016 09:42:22 +0000 > >>>>>>> > >>>>>>> On 04/03/2016 09:39, Tullio Bettinazzi wrote: > >>>>>>>> I applied tour suggestion and analyzed, with firebug, the > >>> composition of the time. > >>>>>>>> The difference between 7 and 8 is the "receiving" time which is more > >>> or less zero in 7 and 2sec. in 8. > >>>>>>>> How can I understand such difference ? > >>>>>>> Try creating the simplest possible web application that demonstrates > >>> the > >>>>>>> problem. > >>>>>>> > >>>>>>> Mark > >>>>>>> > >>>>>>> > >>>>>>>> Tks > >>>>>>>> Tullio > >>>>>>>> > >>>>>>>> > >>>>>>>> P.S. : same server, same client, same network, same code both 7 and > >>> 8 installed from scratch > >>>>>>>>> Subject: Re: Performance regression from 7 to 8 > >>>>>>>>> To: users@tomcat.apache.org > >>>>>>>>> From: geor...@mhsoftware.com > >>>>>>>>> Date: Thu, 3 Mar 2016 09:30:33 -0700 > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> On 3/3/2016 4:06 AM, Tullio Bettinazzi wrote: > >>>>>>>>>> I've an application in which I write a page from a Buffered Stream > >>> directly to the Servlet output stream (more or less 300kb). > >>>>>>>>>> In 7 it works perfectly (100ms). > >>>>>>>>>> > >>>>>>>>>> In 8 , depending from the network connection and mainly from the > >>>>>>>>>> http client itself (the browser in the PC) the same operation > >>> takes from > >>>>>>>>>> 50ms to 4500 ms. > >>>>>>>>> One of the things I would look at is the browser debug window. Open > >>> the > >>>>>>>>> debugger, and go to the Networks/Timings tab and load both pages. > >>> That > >>>>>>>>> would give some insights as to what's happening. Perhaps it is the > >>> page. > >>>>>>>>> Perhaps there's something else. > >>>>>>>>> > >>>>>>>>>> On the same PC I find more or less the same time using Chrome and > >>> Firefox also changing network connections (wifi, lan, adsl). > >>>>>>>>>> Could someone suggest a solution ? > >>>>>>>>>> > >>>>>>>>>> Tks > >>>>>>>>>> Tullio > >>>>>>>>>> > >>>>>>>>> -- > >>>>>>>>> George Sexton > >>>>>>>>> *MH Software, Inc.* > >>>>>>>>> Voice: 303 438 9585 > >>>>>>>>> http://www.connectdaily.com > >>>>>>>> > >>>>>>> > >>>>>>> --------------------------------------------------------------------- > >>>>>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > >>>>>>> For additional commands, e-mail: users-h...@tomcat.apache.org > >>>>>>> > >>>>>> > >>>>> > >>>>> --------------------------------------------------------------------- > >>>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > >>>>> For additional commands, e-mail: users-h...@tomcat.apache.org > >>>>> > >>>> > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > >>> For additional commands, e-mail: users-h...@tomcat.apache.org > >>> > >>> > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org >