-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 David,
On 11/18/2010 3:41 AM, David Dabbs wrote: > We're fronting a Tomcat 6.0.29 instance with httpd 2.2.15 via mod_proxy_ajp. Obligatory question: is it really necessary to use httpd at all? > My suspicion is that we get requests with too-long request uri and or > Referrer and this is gumming up the works for AJP protocol marshalling. I believe that's correct. See below: > Would a change to mod_proxy_http solve the issues? I’d rather not do that if > there’s some Apache/Tomcat connector conf change I can make. Switching to mod_proxy_http will probably get you a bit more stability - -- the mode_proxy_http connector is older and more mature than mod_proxy_ajp. Switching to mod_jk might also get you better stability, but the configuration is totally different between mod_proxy_ajp and mod_jk, so that might be a no-go for you. mod_proxy_http and mod_proxy_ajp have virtually the same configuration (just change all ajp:// to http://) so it's easier to switch from one to the other. > FWIW, here’s my connector def: > <!-- Define an AJP 1.3 Connector on port 8009 --> > > <Connector port="8009" protocol="AJP/1.3" maxThreads="2048" > minSpareThreads="50" maxSpareThreads="200" enableLookups="false"/> That looks pretty standard. 2048 threads might be dangerous depending on your environment: we have lots of reports of OutOfMemoryErrors being thrown because the JVM can't launch a new thread due to resource constraints placed on it by the OS. You might want to double-check your environment just to be sure. > These happen together > > [Wed Nov 17 16:54:49 2010] [error] ajp_msg_append_cvt_string(): > BufferOverflowException 4 3129 > [Wed Nov 17 16:54:49 2010] [error] ajp_marshal_into_msgb: Error appending > the query string > [Wed Nov 17 16:54:49 2010] [error] ajp_send_header: ajp_marshal_into_msgb > failed > [Wed Nov 17 16:54:49 2010] [error] (120001)APR does not understand this > error code: proxy: AJP: request failed to 127.0.0.1:8009 (localhost) Hmm. That's either a mod_proxy_ajp bug or a misconfiguration of httpd and/or Tomcat. What is your mod_proxy_ajp configuration? Specifically, are you setting a max_packet_size? > Some are like this: > [Wed Nov 17 18:25:10 2010] [error] ajp_msg_append_cvt_string(): > BufferOverflowException 4 8186 > [Wed Nov 17 18:25:10 2010] [error] ajp_marshal_into_msgb: Error appending > attribute AJP_REMOTE_PORT=50872 > [Wed Nov 17 18:25:10 2010] [error] ajp_send_header: ajp_marshal_into_msgb > failed > [Wed Nov 17 18:25:10 2010] [error] (120001)APR does not understand this > error code: proxy: AJP: request failed to 127.0.0.1:8009 (localhost) Do the above two errors always happen with this following it: > [Wed Nov 17 06:08:14 2010] [error] [client 216.220.11.62] request > failed: URI too long (longer than 8190) ? If you are using very long URIs and/or many headers, you can get these kinds of errors. The AJP protocol (or maybe just the httpd and Tomcat implementation of them) needs to fit all of the HTTP headers (including the request line - "GET /foo/...") into a single packet, whose default size is 8192 bytes. Someone recently posted an error on the Tomcat size with an AJP response that was failing for the same reason. Unfortunately, the Tomcat code is pretty rough and you get nasty ArrayIndexOutOfBoundsExceptions and no real good message like "header content is too long for packet size" or something meaningful like that. > This one is clear, is there a conf change I can make? You can set the "packetSize" attribute in Tomcat's <Connector> and make a corresponding change to the max_packet_size in httpd (I'm sorry, I don't know how to configure that in mox_proxy_ajp since I pretty much exclusively use mod_jk... you'll have to look up the configuration for that on your own). Hope that helps, - -chris -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkzlPaUACgkQ9CaO5/Lv0PCuoACdGNHdAJ3Tg65g5EAA2WdEZRO9 AaEAn1u7qm96F3RkBaAoy8qYXO0BOTmY =smvi -----END PGP SIGNATURE----- --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org