Am 6. März 2016 13:07:39 MEZ, schrieb Tullio Bettinazzi <tullio0...@live.it>: >What do you mean with : >Have you tried switching the connectors on the tomcat side?
The http connector has different implementations. See http://tomcat.apache.org/tomcat-8.0-doc/config/http.html Felix > ??? >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 >> > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org