Назад | Перейти на главную страницу

Проблема с mod_jk: возможно, Tomcat не запущен или прослушивает не тот порт

Я запускаю какое-то приложение на Tomcat 6.0.26. Перед веб-сервером находится Apache, который разговаривает с ним через mod_jk. Каждые несколько часов, когда я пытаюсь получить доступ к приложению, браузер просто вращается, а контент не извлекается.

В журналах Tomcat об ошибках не сообщается, но мне нравятся такие ошибки в журнале mod_jk:

[Sun Jul 04 21:19:13 2010][error] ajp_service::jk_ajp_common.c (1758): Error connecting to tomcat. Tomcat is probably not started or is listening on the wrong port. worker=***** failed
[Sun Jul 04 21:19:13 2010][info]  jk_handler::mod_jk.c (1985): Service error=0 for worker==*****
[Sun Jul 04 21:19:13 2010][info]  ajp_connection_tcp_get_message::jk_ajp_common.c (955): Tomcat has forced a connection close for socket 46
[Sun Jul 04 21:19:13 2010][info]  ajp_connection_tcp_get_message::jk_ajp_common.c (955): Tomcat has forced a connection close for socket 46
[Sun Jul 04 21:19:13 2010][info]  ajp_connection_tcp_get_message::jk_ajp_common.c (955): Tomcat has forced a connection close for socket 46
[Sun Jul 04 21:19:13 2010][error] ajp_get_reply::jk_ajp_common.c (1503): Tomcat is down or refused connection. No response has been sent to the client (yet)
[Sun Jul 04 21:19:13 2010][error] ajp_get_reply::jk_ajp_common.c (1503): Tomcat is down or refused connection. No response has been sent to the client (yet)
[Sun Jul 04 21:19:13 2010][info]  ajp_connection_tcp_get_message::jk_ajp_common.c (955): Tomcat has forced a connection close for socket 46
[Sun Jul 04 21:19:13 2010][error] ajp_get_reply::jk_ajp_common.c (1503): Tomcat is down or refused connection. No response has been sent to the client (yet)
[Sun Jul 04 21:19:13 2010][info]  ajp_connection_tcp_get_message::jk_ajp_common.c (955): Tomcat has forced a connection close for socket 45
[Sun Jul 04 21:19:13 2010][info]  ajp_connection_tcp_get_message::jk_ajp_common.c (955): Tomcat has forced a connection close for socket 46
[Sun Jul 04 21:19:13 2010][info]  ajp_service::jk_ajp_common.c (1721): Receiving from tomcat failed, recoverable operation attempt=0

мой рабочий настроен следующим образом:

worker.admanagonode.port=8009
worker.admanagonode.host=*****.com
worker.admanagonode.type=ajp13
worker.admanagonode.ping_mode=A
worker.admanagonode.socket_timeout=60
worker.admanagonode.prepost_timeout=10000
worker.admanagonode.connect_timeout=10000
worker.admanagonode.connection_pool_size=200
worker.admanagonode.connection_pool_timeout=300
worker.admanagonode.retries=20
worker.admanagonode.socket_keepalive=1
worker.admanagonode.cachesize=10
worker.admanagonode.cache_timeout=600

У Tomcat такой же номер порта в конфигурации коннектора:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" address="*********" />

Есть ли у кого-нибудь из вас идеи, что мне не хватает? Что может вызвать такие проблемы?

Ура Конрад

спасибо за вашу поддержку, я очень ценю это!

На самом деле, как некоторые из вас предположили, это была проблема с приложением. Это было вызвано неправильной конфигурацией пула соединений MySQL (опечатка в тайм-ауте - значение было от 0 до много). Таким образом, у приложения заканчивались подключения к БД, поскольку они никогда не истекали.

Исправление конфигурации пула (в моем случае c3p0) решило проблему!

Еще раз спасибо!

Конрад

Это загруженный сайт? Возможно, вы просто достигли maxThreads.

Похоже, что Tomcat не отправляет ответ до истечения периода ожидания. Это может быть проблема приложения. Что я бы сделал в этой ситуации, так это настроил бы какой-то мониторинг (будь то Nagios или что-то гораздо более простое), чтобы убедиться в частом интервале, что:

  • Порт 8009 на сервере приложений принимает входящие соединения.
  • Порт 8009 на сервере приложений вообще принимает запросы AJP / 1.3.

Если вы построите график истории этих тестов, вы можете обнаружить проблему с периодическим отключением вашего приложения и / или сервера приложений, что в конечном итоге приведет вас к основной причине. Удачи ... временные проблемы - худшее.

worker.admanagonode.host=*****.com

Ваш компьютер подключен к NAT, и это имя хоста преобразуется во внешний IP-адрес? Обычно вы оставляете это для «localhost» (по умолчанию), если только вы специально не выполняете бэкэнд для внешнего Tomcat, работающего в той же сети (так что для него есть / etc / hosts) и так далее.

То же самое касается вашего адреса коннектора из server.xml = у вас установлено что-то другое, кроме 127.0.0.1? И почему?

Попробуйте простой тест, прокомментируйте все таймауты, повторные попытки и другие необязательные вещи:

worker.admanagonode.port=8009
worker.admanagonode.host=*****.com
worker.admanagonode.type=ajp13

И протестируем этот конфиг. Я думаю, что один из этих вариантов тайм-аута должен быть причиной проблемы.