Hi Chris,

I think if you suggest connection pooling - we ought to try it if it is
possible.
I sent your info to our developer to discuss further.

Yes, I will definitely post back here.
Thanks again for your great insight.

Please bear with me as I go huddle with my crew and discuss the information
further.
I'll be in touch again!
Regards,

-SP


Christopher Schultz-2 wrote:
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> SP,
> 
> pichels wrote:
>> Christopher Schultz-2 wrote:
>>> Is this a browser error message, or something coming from the Tomcat
>>> side?
>> 
>> Browser message - "Page cannot be displayed" - in Firefox or IE6/7 - even
>> using the IP address bypassing DNS of the Web server.
> 
> Hmm. I wonder if you are actually having trouble contacting the server
> - -- that is, not an application error but possibly run out of available
> queued sockets on the server or some odd network error. Maybe check
> using a packet capture like Wireshark to see if the server is even
> picking up the phone.
> 
>>> Are you using a connection pool? If so, what is the configuration? If
>>> not, how are you connecting to the database (and is there a limit on the
>>> number of db connections you allow)?
>> 
>> No - Pooling. JDBC connector. No limit.
> 
> That's bad. When you get a storm of activity, you can choke both your
> app server /and/ your database server if the number of connections is
> not limited. MySQL is pretty fast to establish a new connection, but
> many databases take significant amount of time to create new connections
> and so pooling is also a performance optimization.
> 
>> Yes, for Mediawiki we are setup to use index.php - understood. 
>> With Tomcat we don't use index.jsp as a front-controller for servlet
>> traffic.
> 
> Okay. Does index.jsp do anything significant, then? It sounded like you
> were saying that you observe many problems with that specific page.
> Maybe you are just having generic app server slowness and since the home
> page is popular, you see a lot of failures there. Hmm.
> 
>>> Would you care to post some of those? What are the most popular
>>> exceptions? What seem to be the worst-sounding?
>> 
>> Most Popular below:
>> 
>> WARNING: Error sending end packet 
>> java.net.SocketException: Broken pipe 
>>         at java.net.SocketOutputStream.socketWrite0(Native Method) 
> 
> This is happening because the client hung up the phone before reading
> the entire response (or any of it). This will happen if a client hits
> the STOP button or clicks on another link or hits RELOAD while an
> existing request is still pending. Users will do this if the site feels
> too slow, so it's a vicious cycle: slow site generates additional
> requests from anxious users which ... slows down the site. :(
> 
>> Mostly coming from Tomcat/webapp. Yes, one we fixed but we are still
>> having issues w/ slow queries.
>> Ok, we'll look into running MySQL Explain.
> 
> You might want to get the O'Reilly book on optimizing MySQL. It's thin
> (but cheap!) and gives you some good information about what to look for.
> Unfortunately, MySQL isn't really that tunable. On the other hand, MySQL
> requires very little in the way of tuning!
> 
>>>>> We have also tried using WinXP host files and using an IP address to
>>>>> bypass
>>>>> DNS altogether - no luck.
>> Are you actually performing DNS lookups?
>> 
>> Yes, with all the other users/clients.
>> We have a pilot "test" group of users only using the IP address in the
>> URL
>> box of their browsers.
> 
> That shouldn't matter: the client's computer will do DNS resolution
> before your server is even contacted. If there are server-related DNS
> issues, it will be because the server is trying to do reverse-lookups on
> the clients, not because of what the client's URL bar shows.
> 
>>>>> Problem around 4:15PM - Jan 9, 2009:
>>>>> http://10.97.24.23/Sales/IndentedATPServlet?partNum=086EXUCCCXMA&qty=1&warehouse=M
>> What was the problem?
>> 
>> User was viewing a Servlet page that was querying the AS400 DB2 DB on the
>> backend for a part number.
>> Tomcat may have been waiting for a long time and then teh user recieved
>> "page cannot be displayed" or "Server cannot be found" in IE7 browser.
> 
> Hmm. MySQL or DB2? How many databases are you using?
> 
>>  http://www.nabble.com/file/p21485970/dns.jpeg
> 
> OIh, that could happen for lots of reasons, including "the server just
> isn't running at all". I hate those "helpful" error messages. Wild
> goosechases all around.
> 
>> NOTE: The connection is thru Tomcat JDBC connector to AS400 DB2 DB.
> 
> Technically, the JDBC connector is not Tomcat-specific.
> 
>> We have Apache & Tomcat Debugging set very high. And have MySQL slow
>> queries and error logs.
> 
> Note that debugging logging can slow down your system a lot. File IO is
> much worse than, say, object creations and traversals.
> 
>> Can't find any relevant to error. 
>> Can we set Tomcat debugging with date/time stamps or will Log4j help more
>> with debugging?
> 
> Heh. See this week's archives for log4j issues people have been having.
> I wouldn't worry about that just yet.
> 
>>> This is why I was asking about connection pooling: it looks like Tomcat
>>> is murdering your DB. This could be due to too many connections to
>>> MySQL, overly high query volume, or sloppy code in your application
>>> leaking database resources.
>> 
>> Java Developer is looking into code constantly and cleaning up code.
>> He agreed that there is old sloppy code perhaps and possibly too many
>> connections.
>> Can we control the connections or help diagnose code errors in an easier
>> way? 
> 
> The very best thing to do is to use a database connection pool. Tomcat
> supplies one, which is convenient. What is inconvenient is that you
> probably will have to change the way you get new database connections in
> your code. Hopefully, your application uses a single method to get a
> connection, and that method can simply be re-implemented to use a
> connection pool. Otherwise, you have a lot of work ahead of you.
> 
> Tomcat's connection pool can also be put into a debugging mode where
> connections improperly closed (or not at all) can be logged, including a
> stack trace for where those connections were requested. It's a great
> help when attempting to locate and fix these kinds of issues.
> 
> I suspect that switching to use a connection pool will solve around 50%
> of your problems, and then give you a lot of information about how to
> further improve your application. You may find that your application
> leaks connections all over the place which can cause both Tomcat and
> MySQL to thrash, which makes the user experience suck for the user. As
> you mentioned, bouncing Tomcat makes everything better, so it sounds
> like your application is a bit sloppy when it comes to resource
> management.
> 
> At least you're not running out of memory ;)
> 
> It's also good that you have an engineer who is willing to go after old
> code and fix it rather than just saying "I didn't write it, don't blame
> me".
> 
> If you're ready to make the jump to a connection pool (do it!), let me
> know and I'll give you info on configuration and how to do the code
> (actually, it's all here in the Tomcat site:
> http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html).
> 
> 
> A few caveats about the above page:
> 
> - - The instructions tell you to put the <Resource> element into the
> server.xml file inside your <Context>. Assuming you are using a
> META-INF/context.xml file (you should be!) then put this configuration
> into your context.xml file, not into server.xml.
> 
> - - The instructions tell you to use the autoReconnect=true parameter in
> your JDBC connection URL. You should not (MySQL has asked users not to
> use this for, literally, years). Instead, set the validationQuery
> attribute of the <Resource> element to something like "/* ping */ SELECT
> 1". This will issue a simply query to the server before the connection
> is handed over to your application, so you'll always get a fresh one.
> 
> - - The MySQL example really contains some MySQL-specific stuff, then some
> generic configuration (using the MySQL driver as an example) and then
> stops. The Oracle example actually contains the code to get the
> DataSource (and then the JDBC connection) from the server. This is the
> same no matter what backend database you have.
> 
> Finally, note that you can have multiple DataSources configured. Feel
> free to configure one for MySQL and another for your DB2 instance.
> 
>> I've sent the logs to RHEL(RedHat Linux) support and they have been
>> reviewing and think we have a network issue - router or VMware problems
>> since this is a VMware guest.
> 
> Well, vmware guests can certainly have issues. You aren't using one for
> production, are you? I'm not sure I would recommend that.
> 
>> I was also told by another tech at RHEL support that RHEL5 runs fine on
>> WMWaare as is if it were a physical box - confusing.
> 
> It should run fine. I use vmware guests all the time for testing and
> I've never had any problems. But, I don't use them for load testing or
> anything like that -- just easy ways to lug a linux server around on my
> win32 laptop.
> 
>> I see there are many ways to load test" MySQL - do you have any
>> suggestions on where I can start?
>> A free/Open source tool would be preferred. <smile>
> 
> MySQL is probably running very well. As I said earlier, MySQL has very
> few performance-tuning settings -- mostly changing the sizes of various
> caches. You'll get much more of a performance boost our of properly
> sizing resource pools (such as db connections) in your application and
> making sure that you properly clean up after yourself.
> 
> Let us know what you decide, and how things turn out. Feel free to post
> back with more info and/or questions.
> 
> Hope that helps,
> - -chris
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (MingW32)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
> 
> iEYEARECAAYFAklvsVUACgkQ9CaO5/Lv0PArfwCgqnEZgWX3qrCAlbMyYJ2kNZVG
> 6jwAoKAAyITQV62uh2hvopKlZR8Mc5rQ
> =B62W
> -----END PGP SIGNATURE-----
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Tomcat%3A-client-disconnects--tp21424139p21489309.html
Sent from the Tomcat - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to