A quanto pare, gli spiriti stanno preparando per me (cioè, contro di me) nuove sgradite sorprese sul campo digitale, e adesso hanno iniziato ad interferire lievemente col mio meraviglioso e amatissimo server, senza il quale le mie giornate sarebbero inevitabilmente più difficili, creando problemi inspiegabili davvero originali… O almeno, ieri sera mi si è dal nulla presentato esattamente 1 problema strano, e per fortuna credo di averlo risolto… ma, spero davvero che dietro l’angolo di questa piccola cosa non ci sia in realtà la nascita di una nuova saga di bestemmie, perché francamente non ne ho proprio voglia; le cose devono fottutamente funzionare, per me ma anche per i miei ammiratori (altrimenti detti “utenti” da sysadmin meno magici)! 😤
Ciò che è accaduto è che ieri pomeriggio, via via, un po’ alla volta, ho iniziato a vedere alcune delle mie cose hostate che risultavano di continuo andare giù e tornare su, dal mio monitor di uptime… precisamente, tutte cose PHP ospitate sul mio coso principale; invece, tutte le altre app non-PHP, o anche quelle PHP dentro container Docker dedicati, non davano alcun segno di rogna. Più tardi, poi, la cosa è (ovviamente, figuriamoci) a dir poco peggiorata, perché le maledette cose in questione o ci mettevano intere decine di secondi a rispondere, o andando down poi non tornavano su; o, almeno, rimanevano giù per un bel po’, al punto che personalmente me ne sono accorta nel provare ad usarle (e, in tal caso, precisamente, provando a caricarle si otteneva un errore 504 Gateway Time-out di nginx). 😩
Il perché di tutto ciò era ormai un fottuto mistero. Il fatto che facesse avanti e indietro tra la morte assoluta e la vita incerta mi faceva pensare ad un’indisponibilità di risorse sul sistema, ma non c’era nulla di prettamente saturo; e comunque, per l’appunto, qualsiasi altra cosa girava normalmente. L’unica cosa che cambiata dal prima al dopo di questo problema è che avevo aggiornato dei pacchetti rimasti vecchi sul sistema base (non nel container LXC dove mi girano nginx e PHP, eh), avevo liberato un po’ di spazio su disco, avevo riavviato il sistema… e si era riaccesa la mia VM Windows, che a volte si spegne; non so precisamente se perché QEMU si incula quando il disco è troppo pieno, o se perché c’è un memory leak da qualche parte in ciò che hosto, e magari la quantità di RAM libera che ho a server appena riacceso non è mai quella che ho dopo qualche giorno. 🤨
La cosa è a questo punto strana oltre ogni comprensione anche aliena, perché ho notato che, spegnendo la VM, i problemi del PHP sparivano… e, riaccendendola, in un attimo ricomparivano… mentre non cambiava niente semplicemente riavviando ancora il server o il servizio di php-fpm. Quindi, di base, la mia intuizione di una mancanza di risorse, forse, non era sbagliata, ma ancora non ho capito perché cazzo tutte le altre cose giravano perfettamente… e, se è per questo, perché questo problema è apparso solo adesso e non, che so, l’altro giorno, in cui pure la VM era accesa. Ad ogni modo, magrissima consolazione, perché io pretendo, e sul server devo avere TUTTO, pur sapendo di avere un margine di manovra bassino… nel senso, dovrei sicuramente comprare RAM extra per questo affare, perché 8 GB sono davvero pochi e mi costringono a tenerne altrettanti di swap, e forse dovrei anche comprare un SSD più grande, ma le cose costano e io sono tirchia… 😵
Comunque, era sotto sotto chiaro che il problema in questione era solo un capriccio di PHP, perché altrimenti il tutto non si spiega… Quindi, con la giusta dose di disperazione, ho iniziato a cercare… e, incredibilmente, ho trovato una soluzione, anche se chi l’ha chiesta aveva un problema diverso dal mio: php fpm – PHP scripts suddenly load very slow on Apache – Server Fault. Non ho capito neanche io che cavolo vuol dire, ma nella pratica, dopo aver constatato di avere anche io almeno 1 riga di warning nei miei log come quella presa in esame (anche se, a me si tratta di una ogni tot, però, non di uno spam continuo), ho modificato la proprietà max_children nel file /etc/php/7.0/fpm/pool.d/www.conf, portandola dal misero default di 5 ad un numero più grosso di 25. 😶
Con questa magia, riavviato php-fpm, i problemi sono apparentemente spariti, e anche stamattina la VM è ancora accesa, ma ora il PHP si comporta a modino. Anche se, così, il mistero non fa altro che infittirsi ancora; e, decisamente, seppur il problema sia risolto, il dubbio non è svelato, e temo non lo sarà mai. Su StackExchange c’è chi dice che il default di 5 è bassissimo, e va alzato per praticamente qualsiasi sito… ma, allo stesso tempo, qualcuno dice invece che i problemi apparsi sono un sintomo di qualcosa che usa troppe risorse, e che col tempo peggiorerà ancora di più (per esempio, una query database lenta)… BAH! Ma ehi… da sysadmin, considerato anche che non mi pagano abbastanza e che lavoro solo io qui, mi concentrerò sul risolvere solo le rogne, mentre i misteri oscuri li lascerò a chi ha più esperienza con l’occulto non-informatico… basta che ora Proxatore e compagnia funzionano!!! 😘
The evolution of rationality: How chimps process conflicting evidence