Я запускаю сервер Tomcat (6.0.28) на Ubuntu (10.10) с включенным APR (напрямую на порт 80 без какого-либо внешнего доступа к веб-серверу).
Когда я отправляю страницу из браузера и данные POST имеют большой размер (> 1444 байта), запрос не выполняется, и я получаю ошибку «504». Если данных меньше, запрос выполняется.
Это проблема только тогда, когда доступ к сайту осуществляется через прокси-сервер Squid и / или с низкой пропускной способностью. Нет проблем, если доступ к сайту осуществляется через быстрое Интернет-соединение.
Я включил RequestDumperValve, и он постоянно показывает усеченный запрос POST, а затем прерывается, ничего не регистрируя в журнале доступа tomcat.
Чтобы запутать вещи, у меня есть это:
Я сравнил файлы конфигурации apache2 и файлы конфигурации tomcat и не нашел никакой разницы.
Мои наблюдения на данный момент:
На стороне конфигурации Tomcat APR включен и disableUploadTimeout = "false". Все остальное по умолчанию.
Или это все-таки проблема Squid? Или что-то на уровне сети / TCP?
Есть подсказки, что еще я могу попробовать?
Это была проблема, связанная с размером MTU. Когда клиенты использовали модемы ADSL, а маршрутизаторы имели проблему «черной дыры» PMTU, возникала эта странная проблема.
Мы снизили MTU на наших серверах до 4192, и все было хорошо. (Это лучшая практика или что?)