Deci, pentru context, rulez PHP-FPM 7.4 pe Ubuntu și l-am compilat cu ZTS. Apoi au adăugat extensiile Pthreads și ZSTD.
Rulez câteva sute de sarcini și am nevoie de ele pentru a genera noi procese php cât mai repede posibil, dar după mai multe teste mi-am dat seama că, deși scriptul meu rula în 0,001 secunde, de fiecare dată când am generat un nou thread PHP cu Pthreads, a adăugat 0,01 secunde. la ecuație, ceea ce face ca timpul fiecărei iterații de buclă să se înmulțească cu 10 .
Încerc să găsesc explicații posibile pentru acest lucru deja de câteva săptămâni și până acum, după ce am făcut mai multe teste și am ajustat o mulțime de setări, singurul lucru care a avut sens este că aceasta este o Pthreads Limitation prin design .
Următorul pas logic ar fi să actualizez codul la noul proiect Parallel, dar între timp am găsit ceva curios, când activez opcache.enable_cli în configurația PHP FPM problema aproape a dispărut și majoritatea thread-urilor nu sunt întârziate!
Din păcate, acest lucru cauzează erori constante de corupție/segmentare zend_mm_heap, care din ceea ce am citit nu pot fi cu adevărat remediate (este fie o problemă de bază zend, fie pthreads), dar s-ar părea că este un bun început pentru a înțelege rădăcina problemei. .
Oricine ?