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

apache2 http2 keepalives и изящное завершение

Интересно, может ли кто-нибудь мне кое-что объяснить, пока я застреваю.

Я ищу сайт, на котором несколько доменов взаимодействуют с одним и тем же кодом, обслуживая разный контент в зависимости от используемого домена. Мы переместили сайт на http2 с подстановочным сертификатом для всех доменов, и все, похоже, хорошо работает, кроме проблема, которую я просто не могу понять.

Мой нынешний http2 config в VirtualHost для всех сайтов ниже по адресу Конфиг 1

Когда сервер проработал какое-то время (24 часа), появляется много сообщений поддержки активности, даже если Keepalives являются off и H2MaxWorkerIdleSeconds = 20.

Я заметил, что все процессы, у которых есть keepalive нет данных в столбце запроса Сервер Статус 1

Иногда я также нахожу много "Gracefully finishing"процессы, которые я убиваю вручную с помощью скрипта.

Практический результат этого заключается в том, что сайты будут работать медленно, и у меня закончились процессы.

Может ли кто-нибудь сказать мне, почему строки, которые настроены на поддержку активности, не имеют запросов или Vhost, и почему я застреваю "Gracefully finishing«процессы, которые не умирают?

Конфиг 1

ProtocolsHonorOrder On

Protocols h2 http/1.1

H2Direct on

SSLCompression Off

H2MaxSessionStreams 200

H2SessionExtraFiles 100

H2MaxWorkerIdleSeconds 20

H2MaxWorkers 200

H2MinWorkers 10

Статус сервера 1

Current Time: Wednesday, 13-Jul-2016 14:00:49 BST
Restart Time: Tuesday, 12-Jul-2016 18:29:46 BST
Parent Server Config. Generation: 4
Parent Server MPM Generation: 3
Server uptime: 19 hours 31 minutes 3 seconds
Server load: 0.49 0.52 0.50
Total accesses: 645863 - Total Traffic: 5.4 GB
CPU Usage: u406.79 s84.29 cu0 cs0 - .699% CPU load
9.19 requests/sec - 80.6 kB/second - 8.8 kB/request
132 requests currently being processed, 29 idle workers
RC_KWKWK_KK_KWKKK_KKKKWKKW.KKWK_KWKKWKKWKKWKKKK__K_KKWK_KKWKK_._
KKWKKK_K.W_KK.KKKKKKKKKK.K_KK_W.W.WKKKK_KKK_KW.K..KK_KKKK_KWKKKK
K.K__WK_KKK_KWK__KWKKKKK.__WK_K_KWKKRWKKKKKWK...................
................................................................
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
Srv PID Acc M   CPU SS  Req Conn    Child   Slot    Client  VHost   Request
0-3 2290    0/50/3251   R   0.60    0   0   0.0 0.42    26.94   119.26.154.144  www.changeddomain.com:80    HEAD /webcams/lac HTTP/1.1
1-3 2292    1/80/3194   C   7.94    0   4172    84.9    0.69    29.33   180.76.15.8 www.changeddomain.com:443   /camper-portals HTTP/1.1
2-3 2200    0/61/4811   _   0.76    4   0   0.0 0.90    44.57   66.249.78.18    www.changeddomain.com:80    GET /robots.txt HTTP/1.1
3-3 2294    45/74/851   K   2.96    22  270 15.9    0.07    5.31    194.203.40.135      
4-3 2296    1/102/4297  W   5.10    204 7945    0.0 0.86    38.15   82.132.237.7    www.changeddomain.com:443   GET /events/ HTTP/2
5-3 2298    19/38/4996  K   0.88    275 0   0.0 0.20    54.36   2a02:c7d:6a44:3e00:17:3a28:d22c     
6-3 2300    12/98/4308  W   1.19    124 0   0.0 0.33    39.88   164.39.215.246  www.changeddomain.com:443   GET /images/some-logo.png HTTP/2
7-3 2797    12/40/4700  K   0.38    83  147 0.0 0.31    47.94   217.41.3.50     
8-3 2304    0/86/4820   _   1.82    2   489 0.0 0.68    45.34   5.65.46.171 www.changeddomain.com:443   POST /_ajax_request.php HTTP/1.1
9-3 2307    17/73/4692  K   1.89    52  0   0.0 0.46    40.90   79.154.86.34        
10-3    2799    2/32/2915   K   0.34    5   0   0.0 0.56    25.22   88.131.48.4     
11-3    2311    0/70/4038   _   0.95    0   0   0.0 0.61    37.22   192.243.55.136  www.changeddomain.com:80    /events/videos/video-june HTTP/1.1
12-3    2313    19/76/5080  K   1.11    192 0   0.0 0.51    55.49   90.147.34.234       
13-3    2315    9/129/3168  W   2.33    30  155 1.5 0.50    32.61   86.146.7.124    www.somechangeddomain.com:443   POST /_ajax_request.php HTTP/2

Большое спасибо, простое обновление, похоже, помогло. Мне немного неловко, что я не сделал этого раньше.

Спасибо

Том

Какую версию apache и mod_http2 вы используете? Изначально с такими вещами было много проблем (например, https://github.com/icing/mod_h2/issues/72)

Предлагаем вам перейти на последнюю версию (обратите внимание, что для этого требуется Apache 2.4.23): https://github.com/icing/mod_h2/releases.

Поддержка HTTP / 2 в Apache по-прежнему помечена как экспериментальная https://httpd.apache.org/docs/2.4/mod/mod_http2.html:

Предупреждение

Этот модуль экспериментальный. Его поведение, директивы и значения по умолчанию могут больше изменяться от выпуска к выпуску по сравнению с другими стандартными модулями. Пользователям рекомендуется обращаться к файлу «ИЗМЕНЕНИЯ» на предмет возможных обновлений.

И изначально было много изменений и исправлений стабильности. Однако в последнее время скорость изменений замедлилась, и лично я считаю, что сейчас она стабильна, но пока запускаю ее только на небольшом сайте.