ciao a tutti; i miei colleghi stanno sudando sette camicie per far funzionare bene un sito web molto trafficato (per dare un ordine di grandezza molto spannometrico, siamo sui 100 Mbit/s di media) con una soluzione con VM dove gira Nginx (è un web server) che serve i contenuti statici e fa eseguire il php a dei fast cgi che stanno su VM separate.
Il problema che si riscontra e' che queste VM con fastcgi (e solo loro, non gli Nginx) creano un traffico fortissimo verso il file server (montato in NFS) dove si trovano tutti i file, statici e dinamici, del sito. Cosa che lo mette spesso in crisi, nonostante sia un NetApp 2020: non un super storage ma comunque ottimizzato per l'NFS.
Come sempre quando non si sa a chi dare la colpa l'hypervisor è il primo capro espiatorio e l'ultima di oggi è "abbiamo una teoria per cui si crea un'interferenza fra i fast cgi e vmware per cui il traffico verso il file server è disturbato...".
Questa teoria verrebbe dal fatto che alcune VM piu' anziane (e quindi con un kernel di un paio di anni fa) che girano su Xen non darebbero lo stesso problema, o lo darebbero in modo meno evidente.
Siccome sono pieno di pazienza e dubbi, mi sono domandato se questa "interferenza" fosse una cosa possibile. Beh lo stesso storage sempre in NFS è montato dagli host e ci sono i dischi locali delle VM con traffico e utiizzo della cpu bassissimi, e dalle VM con i web server statici anche qui senza problemi evidenti. Poi non si notano ne' ritrasmissioni ne' nulla del genere quindi sarei portato a escludere problemi di rete sia a livello 2 sia 3.
Ho anche fatto provare a cambiare le tipologie di nic da E1000 a VMXnet e viceversa, ma tutto va nello stesso modo.
Non so se qualcuno fra voi si sia cimentato con questo tipo di problemi, o se mi possono arrivare suggerimenti almeno su come "assolvere" l'hypervisor.
Ho gia' proposto di realizzare una VM che abbia lo stesso kernel e versione di application server di quella pù vecchia su Xen.
A margine... un mio pallino sarebbe quello di fare un test col buon vecchio apache: il suo peggior difetto pare sia che utilizza in modo poco efficiente la memoria... ma di memoria ne ho in relativa abbondanza mentre lo storage è strozzato per cui....
non saprei bene come aiutarti. Posso solo dirti che io con nginx ho sempre avuto qualche problema e mi sembra davvero strano che siano le vm ad avere problemi.
Io fossi in te farei quella prova con apache, almeno ti togli il dubbio
Non ti seguo del tutto, ma le vecchie VM su Xen accedono anche loro ai files sul NetApp? Non conosco bene NetApp ma avrà immagino degli strumenti per verificare i carichi di lavoro sullo storage in tempo reale, dato che già dici che non vedi retransmit...
Comunque in generale, dato che noto che spesso ritorni su questi problemi, devi veramente "scavare" nel performance monitor di vCenter, li hai tutte le informazioni che ti servono, oppure tramite esxtop come ad esempio spiegato qui:
(PS: il 2020 è proprio entry level, e in generale non dare mai per scontato a priori che una parte della struttura non sia il problema)
PS2: trattandosi di codice web, metti anche in conto che sia scritto male.... se sei pieno di ram perchè non usarla e fare caching molto spinto sulle VM?
Luca.
sì anche le vecchie VM accedono allo stesso netapp con stesso protocollo e opzioni di mount. Non si vedono errori a livello fino al TCP, anche le statistiche dell'NFS non mostrano segnali anomali.
Tutto fa pensare che sia l'applicazione (o meglio l'application server) che legge a valanga, senza motivo... e che questo motivo fa comodo attribuirlo a un malfunzionamento dell'hypervisor.
(PS: il 2020 è proprio entry level, e in generale non dare mai per scontato a priori che una parte della struttura non sia il problema)
naturalmente è così, infatti ne è stato in tutta fretta ordinato un altro (2040) nella configurazione minima che ci si poteva permettere al momento. E la cosa mi preoccupa perché se sicuramente sarà più potente come ram e cpu ha però molte meno meccaniche....
PS2: trattandosi di codice web, metti anche in conto che sia scritto male.... se sei pieno di ram perchè non usarla e fare caching molto spinto sulle VM?
è quasi sicuro che sia scritto male o quantomeno scritto per un'utensa almeno 40 volte minore. IL caching lo facciamo e funziona bene con i contenuti statici, meno con quelli dinamici. Il php forse non è proprio più adatto... c'è un sito famoso di colore blu che lo utilizza, però come ci hanno raccontato stanno andando verso farm completamente diskless, non sarà un caso...
Grazie comunque, lo so che sono domande difficili e un po' ot
Ma le vecchie VM hanno lo stesso carico? Può essere che il problema dipenda da un diverso carico di lavoro?
Alla rete NFS ci accedono con una scheda di rete virtuale dedicata?
Una prova con Apache la farei, giusto per scrupolo, ma temo che non sia l'unica variabile differente tra ambiente nuovo e vecchio.
Ma le vecchie VM hanno lo stesso carico? Può essere che il problema dipenda da un diverso carico di lavoro?
Alla rete NFS ci accedono con una scheda di rete virtuale dedicata?
tutte le macchine vecchie, fisiche, xen, o vmware hanno una sola nic;
per fortuna dalla data del primo post una macchina su xen si è comportata molto peggio di tutte quindi le prove a carico di vmware sono in gran parte cadute ![]()
Mi era capitato in passato, al tempo del fisico, di vedere versioni di kernel poco differenti le une dalle altre che davano risultati molto differenti con l'nfs: in particolare uno dei primi kernel con la RedHat 5 faceva un vero e proprio DOS contro lo storage (!). In questo caso per l'imputato sia più il php, ma il vero problema è la qualità e lo spirito con cui è stato pensato il codice.
Che opzioni di mount usi?
Hai provato a cambiarle e lavorare su quelle? NetApp tra l'altro dovrebbe avere una guida con alcune opzioni raccomandate.
sì a suo tempo (è un problema che si trascina da quando avevo ancora entrambe le gambe sane) si è provato a lavorare su quelle, senza grossi risultati.
Per es su una vm vmware che andava "male" le opzioni sono
(rw,noatime,soft,timeo=14,retrans=2,acregmin=10,acregmax=120,acdirmin=60,acdirmax=300,addr=192.168.21.21)
kernel: 2.6.32-220.17.1.el6.x86_64 #1 SMP
PHP 5.3.3 (cgi-fcgi)
su una xen che andava "bene"
(rw,noatime,soft,timeo=14,retrans=2,acregmin=10,acregmax=120,acdirmin=60,acdirmax=300,addr=192.168.21.21)
2.6.18-308.4.1.el5xen #1 SMP
PHP 5.1.6 (cgi-fcgi)
come dicevi tu c'è parecchia differenza. avevo anche chiesto di fare un test a pari versioni almeno di kernel ma non sono riuscito a ottenerlo.
Comunque la causa scatenante (ma non il perché si manifesti in modo virulento con le VM più recenti)) si è trovata: le visite da parte soprattutto di spider che scatenano le letture di grandi file contenenti db berkley
