Am 29.06.2016 um 11:58 schrieb Michael Diener:
I get occasional Apache 2 crashes being caused by mod_jk and I'm running
out of ideas about the cause of the problem. I hope somebody here can point
me in the right direction.
Can you reproduce? Does it also happen on a test system?
tomcat6 6.0.39-1
libapache2-mod-jk 1:1.2.37-3
Latest we provide in the project is 1.2.41. It is pretty easy to compile
yourself and would be an interesting check to see, whether it is just an
old already fixed problem.
apache2 2.4.7-1ubuntu4
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
/var/log/apache2/error.log
**** buffer overflow detected ***: /usr/sbin/apache2 terminated=======
Backtrace:
=========/lib/x86_64-linux-gnu/libc.so.6(+0x7329f)[0x7fe9aa7de29f]/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7fe9aa875bbc]/lib/x86_64-linux-gnu/libc.so.6(+0x109a90)[0x7fe9aa874a90]/lib/x86_64-linux-gnu/libc.so.6(+0x10ab07)[0x7fe9aa875b07]/usr/lib/apache2/modules/mod_jk.so(jk_open_socket+0x8d8)[0x7fe9a7c60cb8]/usr/lib/apache2/modules/mod_jk.so(ajp_connect_to_endpoint+0x65)[0x7fe9a7c7bf75]/usr/lib/apache2/modules/mod_jk.so(+0x36422)[0x7fe9a7c7d422]/usr/lib/apache2/modules/mod_jk.so(+0x1674c)[0x7fe9a7c5d74c]/usr/sbin/apache2(ap_run_handler+0x40)[0x7fe9ab65fbe0]/usr/sbin/apache2(ap_invoke_handler+0x69)[0x7fe9ab660129]/usr/sbin/apache2(ap_process_async_request+0x20a)[0x7fe9ab6756ca]/usr/sbin/apache2(+0x69500)[0x7fe9ab672500]/usr/sbin/apache2(ap_run_process_connection+0x40)[0x7fe9ab669220]/usr/lib/apache2/modules/mod_mpm_event.so(+0x681b)[0x7fe9a783981b]/lib/x86_64-linux-gnu/libpthread.so.0(+0x8184)[0x7fe9aab38184]/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7fe9aa86537d]*
======= Memory map: ========
7fe688000000-7fe68806a000 rw-p 00000000 00:00 0
7fe68806a000-7fe68c000000 ---p 00000000 00:00 0
.......
7fffa6c27000-7fffa6c48000 rw-p 00000000 00:00 0 [stack]
7fffa6c86000-7fffa6c88000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
[Wed Jun 29 05:01:50.052325 2016] [core:notice] [pid 1747:tid
140641581987712] AH00051: child pid 17018 exit signal Aborted (6), possible
coredump in /etc/apache2
The log indicates there might be a coredump, but there is not.
Configure your system so that it writes core dump files, look at the
core dump file with "gdb", e.g. running "thread apply all bt full" and
provide the output.
Likely your httpd is running as a suid process (started as root but the
children switch uid to something else, like www or similar). You have to
enable core dump for suid processes explicitly in your Linux.
There is no log in /var/log/apache2/mod_jk.log at the same time.
/var/log/tomcat6/catalina.out
Jun 29, 2016 5:01:49 AM org.apache.jk.common.ChannelSocket processConnection
WARNING: processCallbacks status 2
Jun 29, 2016 5:01:49 AM org.apache.jk.common.ChannelSocket processConnection
WARNING: processCallbacks status 2
The Tomcat log indicates AFAIK that the client connection has been lost.
/etc/libapache2-mod-jk/httpd-jk.conf
<IfModule jk_module>
JkWorkersFile /etc/libapache2-mod-jk/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel warn
JkShmFile /var/log/apache2/jk-runtime-status
</IfModule>
/etc/libapache2-mod-jk/workers.properties
The next lines look like they are coming from very old and partially
nonsense recipies. Your crash won't be a result of those but you should
probably start to create your config based on what's inside the conf
folder of our source distribution for mod_jk. The files can also be
found under http://svn.apache.org/viewvc/tomcat/jk/trunk/conf/.
workers.tomcat_home=/usr/share/tomcat6
workers.java_home=/usr/lib/jvm/java-6-sun
ps=/
worker.list=loadbalancer
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=ajp13_worker,ajp13_worker2
worker.loadbalancer.sticky_session=0
worker.ajp13_worker.port=xxx
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
worker.ajp13_worker.lbfactor=50
If you don't really need the increased max_packet_size, you should
comment it out here and the packetSize below and retry. Those settings
are not so common. There were also changes related to them in newer
versions.
worker.ajp13_worker.max_packet_size=65536
Not crash related, but I don't like the general socket_timeout. Look at
the configs proposed above. They use lots of good timeouts, but
socket_timeout is not one of them.
worker.ajp13_worker.socket_timeout=300
worker.ajp13_worker.ping_mode=A
worker.ajp13_worker.secret=xxx
worker.ajp13_worker.fail_on_status=503
worker.ajp13_worker.connection_pool_size=32768
#worker.ajp13_worker.activation=disabled
worker.ajp13_worker.redirect=ajp13_worker2
worker.ajp13_worker2.port=xxx
worker.ajp13_worker2.host=otherhost
worker.ajp13_worker2.type=ajp13
worker.ajp13_worker2.lbfactor=1
worker.ajp13_worker2.max_packet_size=65536
worker.ajp13_worker2.socket_timeout=300
worker.ajp13_worker2.ping_mode=A
worker.ajp13_worker2.secret=xxx
worker.ajp13_worker2.fail_on_status=503
worker.ajp13_worker2.connection_pool_size=32768
worker.ajp13_worker2.activation=disabled
#worker.ajp13_worker2.redirect=ajp13_worker
/etc/tomcat6/server.xml
<Connector
port="xxx" protocol="AJP/1.3" redirectPort="8443"
enableLookups="false" maxThreads="65536" minSpareThreads="25"
maxSpareThreads="75"
connectionTimeout="300000" packetSize="65536" request.secret="xxx"
/>
ls /etc/apache2/mods-enabled/
access_compat.load auth_basic.load authz_core.load autoindex.conf
deflate.load env.load headers.load mime.conf mpm_event.load rewrite.load
socache_shmcb.load status.conf
alias.conf authn_core.load authz_host.load autoindex.load dir.conf
expires.load jk.conf mime.load negotiation.conf setenvif.conf ssl.conf
status.load
alias.load authn_file.load authz_user.load deflate.conf dir.load
filter.load jk.load mpm_event.conf negotiation.load setenvif.load ssl.load
lsb_release -rd
Description: Ubuntu 14.04.4 LTS
Release: 14.04
Regards,
Rainer