What do you mean with : Have you tried switching the connectors on the tomcat side? ??? Tks
> Subject: Re: Performance regression from 7 to 8 > To: users@tomcat.apache.org > From: felix.schumac...@internetallee.de > Date: Sat, 5 Mar 2016 14:00:11 +0100 > > Am 05.03.2016 um 12:34 schrieb Tullio Bettinazzi: > > 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. > If it is stable slow on one client, then you could take threaddumps on > the tomcat side and look what it is doing. On the network side, you > could look at a tcpdump. > > Have you tried switching the connectors on the tomcat side? > > Felix > > 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 > >> > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org >