Rulez pachetul httpd24u de la IUS pe două servere Centos 7. Identificatorul de versiune pentru pachet este „2.4.52-1.el7.ius”.
În ultima săptămână sau cam așa ceva, am văzut răspunsuri HTTP întrerupte de la servere. Browserul raportează „net::ERR_CONNECTION_CLOSED”, iar jurnalul de erori de server include rezultate precum:
*** Eroare în `/usr/sbin/httpd': free(): dimensiunea următoare nevalidă (rapid): 0x00007fb394015f10 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x81329)[0x7fb3cf231329]
/lib64/libcrypto.so.10(CRYPTO_free+0x1d)[0x7fb3c7b1396d]
/lib64/libcrypto.so.10(EVP_MD_CTX_cleanup+0xe9)[0x7fb3c7bd0a69]
/lib64/libcrypto.so.10(+0x1275ee)[0x7fb3c7bcc5ee]
/lib64/libssl.so.10(ssl23_accept+0x39)[0x7fb3c7f37409]
/etc/httpd/modules/mod_ssl.so(+0x18352)[0x7fb3c0122352]
/etc/httpd/modules/mod_ssl.so(+0x19ed6)[0x7fb3c0123ed6]
/etc/httpd/modules/mod_ssl.so(+0xdad0)[0x7fb3c0117ad0]
/usr/sbin/httpd(ap_run_process_connection+0x40)[0x55a2b89abe10]
/etc/httpd/modules/mod_mpm_event.so(+0x714a)[0x7fb3c25db14a]
/etc/httpd/modules/mod_mpm_event.so(+0x7d9e)[0x7fb3c25dbd9e]
/lib64/libpthread.so.0(+0x7ea5)[0x7fb3cf789ea5]
/lib64/libc.so.6(clona+0x6d)[0x7fb3cf2aeb0d]
======= Harta memoriei: ========
55a2b8955000-55a2b89e1000 r-xp 00000000 08:03 1879095252 /usr/sbin/httpd
55a2b8be0000-55a2b8be3000 r--p 0008b000 08:03 1879095252 /usr/sbin/httpd
55a2b8be3000-55a2b8be5000 rw-p 0008e000 08:03 1879095252 /usr/sbin/httpd
55a2b8be5000-55a2b8be9000 rw-p 00000000 00:00 0
55a2b9fea000-55a2ba3a0000 rw-p 00000000 00:00 0 [heap]
55a2ba3a0000-55a2ba46c000 rw-p 00000000 00:00 0 [heap]
7fb34c000000-7fb34c021000 rw-p 00000000 00:00 0
7fb34c021000-7fb350000000 ---p 00000000 00:00 0
7fb354000000-7fb354074000 rw-p 00000000 00:00 0
7fb354074000-7fb358000000 ---p 00000000 00:00 0
7fb358000000-7fb358021000 rw-p 00000000 00:00 0
(Harta memoriei continuă pentru câteva pagini.)
Nu știu cum să interpretez acest mesaj de eroare. Am învățat că „free(): următoarea dimensiune invalidă” indică o eroare de memorie (încercând liber()
memorie nealocată sau dubluliber()
având aceeași memorie).
Există câteva evenimente recente, posibil corelate, la care mă pot gândi:
- Pachetul httpd24u a fost actualizat destul de recent.Toate fișierele httpd (module, etc) au ultima modificare de 7 ianuarie. Cu toate acestea, nu cred că problemele noastre se întorc atât de departe.
- Am activat HTTP/2 recent (3 februarie). Acest lucru a implicat și comutarea httpd-ului de la „lucrător” la „eveniment” MPM, cel puțin pe unul dintre servere.
Un următor pas evident de depanare este să dezactivați HTTP/2 și să vedeți dacă erorile dispar. Cu toate acestea, chiar dacă asta ajută, nu vrem să rulăm fără HTTP/2 pentru foarte mult timp din cauza îmbunătățirilor de performanță pe care le oferă. Ce mai pot incerca in aceasta situatie?
--
Actualizare: revenirea la 2.4.51 (fără alte modificări) a îmbunătățit fiabilitatea serverelor noastre, cred că pentru că această eroare a fost creată în 2.4.52: https://bz.apache.org/bugzilla/show_bug.cgi?id=65769