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

Процессы Apache случайным образом переключаются на загрузку ЦП на 25 минут на EC2 / RHEL / Glassfish4

У меня есть сервер, который получает большие запросы POST (максимум 100 000 символов) и передает их обратно на сервер приложений Glassfish4 с помощью mod_jk. Запросы являются POST-запросами с типом содержимого application / x-www-form-urlencoded. Один из параметров - большой XML-документ, подготовленный на веб-странице хостинга. Я кодирую xml с помощью encodeURIComponent () на странице перед добавлением параметров, а затем отправляю POST с помощью XmlHttpRequest.

Использование RHEL 7 на машине Amazon EC2 с соответствующими ресурсами.

Free Command:
            total        used        free      shared  buff/cache   available
Mem:        3689604     2564636      712168       16992      412800      946260

ps -aux:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
apache    8276  1.6  1.6 293492 62228 ?        S    14:51   1:08 /usr/sbin/httpd
postfix   8326  0.0  0.1  91168  3868 ?        S    14:59   0:00 pickup -l -t un
apache    8372  0.0  0.1 237408  5896 ?        S    15:05   0:00 /usr/sbin/httpd
apache    8575  0.0  0.1 237504  6160 ?        S    15:24   0:00 /usr/sbin/httpd
apache    8595  6.5  3.3 354720 122936 ?       S    15:26   2:23 /usr/sbin/httpd
apache    8649  6.4  2.8 335576 103624 ?       S    15:32   1:57 /usr/sbin/httpd
apache    8655  7.0  2.9 342236 110316 ?       S    15:32   2:07 /usr/sbin/httpd
apache    8698  0.0  0.1 237400  5600 ?        S    15:37   0:00 /usr/sbin/httpd
apache    8700  0.0  0.1 237404  5512 ?        S    15:37   0:00 /usr/sbin/httpd
apache    8711  0.0  0.1 237408  5912 ?        S    15:41   0:00 /usr/sbin/httpd
apache    8714  0.0  0.1 237404  5384 ?        S    15:46   0:00 /usr/sbin/httpd
root      8716  0.0  0.0      0     0 ?        S    15:48   0:00 [kworker/0:1]
root      8719  0.0  0.0      0     0 ?        R    15:53   0:00 [kworker/0:0]

Все работает нормально при низкой нагрузке, но при умеренном увеличении нагрузки (примерно 1 запрос в секунду) некоторые процессы apache переходят на высокий ЦП, и ЦП виртуальной машины достигает 100%.

Я много чего пробовал - обновил apache с 2.2 до 2.4.16, отключил SSL, перекомпилировал apache на чистой виртуальной машине, попытался закрыть соединения в браузере, но проблема продолжает повторяться.

Мои mod_status и ps -aux показывают процессы, которые вызывают нарушение, и когда я запускаю strace, я постоянно получаю следующее:

read(18, "\6\37\372", 3)                = 3
write(18, "\0224\0\0", 4)               = 4
read(18, "AB\0\3", 4)                   = 4
read(18, "\6\37\372", 3)                = 3
write(18, "\0224\0\0", 4)               = 4
read(18, "AB\0\3", 4)                   = 4
read(18, "\6\37\372", 3)                = 3
write(18, "\0224\0\0", 4)               = 4
read(18, "AB\0\3", 4)                   = 4
read(18, "\6\37\372", 3)                = 3
write(18, "\0224\0\0", 4)               = 4
read(18, "AB\0\3", 4)                   = 4
read(18, "\6\37\372", 3)                = 3
write(18, "\0224\0\0", 4)               = 4
read(18, "AB\0\3", 4)                   = 4
read(18, "\6\37\372", 3)                = 3
write(18, "\0224\0\0", 4)               = 4
read(18, "AB\0\3", 4)                   = 4
read(18, "\6\37\372", 3)                = 3
write(18, "\0224\0\0", 4)               = 4
read(18, "AB\0\3", 4)                   = 4
read(18, "\6\37\372", 3)                = 3
write(18, "\0224\0\0", 4)               = 4
read(18, "AB\0\3", 4)                   = 4

Единственное, что я не пробовал, - это опубликовать текст XML как text / plain без параметров.

Кто-нибудь может здесь что-нибудь придумать?

Спасибо за помощь.

Майк Руссиелло