La gestione delle risorse per le tue applicazioni web

Una volta ottenuto il tuo account unbit dovrai iniziare a pianificare l'utilizzo delle risorse.

Ogni applicazione, dal piu' semplice script php a una istanza tomcat richiede di generare 1 o piu' processi all'interno del sistema. Ognuno di questi processi ha un suo address space (la somma di tutte le aree di memoria, fisica o virtuale utilizzata dal processo).

Su http://unbit.it/limits puoi verificare per ogni piano quante risorse vengono allocate per i domini, i sottodomini o gli application server.

Prendiamo come esempio un piano Entry level. Il suo dominio principale ha a disposizione 6 processi da 64 megabyte di address space.

Questo dominio potra' gestire fino a 6 richieste cgi contemporanee (in modalita' cgi ad ogni richiesta viene generato un processo che viene chiuso subito dopo la risposta).

La modalita' cgi (il default anche per php) e' molto comoda perche' utilizza in ogni momento solo i processi che le servono liberandoli quando non ne fa uso.

Purtroppo pero' questo implica che in caso il dominio stia gia' eseguendo sei script, il settimo ricevera' un brutto messaggio di 'site overload' (sito sovraccarico)

In contesti professionali e' pertanto opportuno utilizzare i cosiddetti long running task. I processi si avviano in automatico e restano attivi in attesa delle successive richieste.

Questo, oltre a diminuire notevolmente i tempi di risposta, permette di eliminare il problema del site overload, di fatto indicando al webserver di rimanere in attesa (fino ad un certo limite) del primo processo disponibile.

I framework e le applicazioni php

Sono disponibili decine di tecnologie per effettuare il deploy di long running task sui server Unbit. Ad esempio per l'ambiente python sono disponibili uWSGI e FLUP, per ruby FastCGI e uRACK, forniamo un handler PSGI per le applicazioni perl ed e' possibile eseguire php in modalita' fastcgi utilizzando il nostro fastcgi-scgi-handler UFCGI.

Tutte le tecnologie di deploy si basano sul numero di processi da generare. Piu' processi vengono impiegati piu' richieste contemporanee l'applicazione potra' gestire.

... per l'invio delle email

Per inviare mail dalle applicazioni web si possono utilizzare 2 metodi: sendmail e smtp.

Se si utilizza sendmail (il default per la funzione mail() di php) e' necessario che vi siano almeno 2 processi liberi (sendmail chiama una fork poco dopo lo spawn) altrimenti il sistema non potra' lanciare il comando. Se invece si usa la modalita' smtp (collegandosi a 127.0.0.1 sulla porta 25) non e' necessario generare processi e quindi non vi sono problematiche particolari.

Ricapitolando, con 4 processi a disposizione, se si vogliono inviare mail del server tramite sendmail bisogna ricordarsi di lasciare almeno due processi liberi. Questo problema non si pone usando smtp

Se la tua applicazione apparentemente non ha motivo di restituire un site overload verifica che non siano rimasti processi "appesi| a causa di una configurazione errata del numero di processi o della tecnologia di invio email utilizzata.

... i thread

I Thread (o lightweight processes) condividono l'address space del processo che li ha generati. Il vantaggio e' che il consumo di risorse e' ridottissimo, ma introducono diverse problematiche di programmazione.

Nelle offerte application server, in base al piano, sono disponibili molti thread rispetto ai processi (che sono sempre di un numero ridotto), mentre per l'hosting il kernel non fa distinzione tra processo e thread (per ovvi motivi economici, almeno per ora...)

... come controllo il consumo delle mie applicazioni ?

Nella sezione gestione processi del pannello di controllo puoi visualizzare l'elenco delle applicazioni in esecuzione per il tuo account e eventualmente inviargli i segnali UNIX/POSIX

i miei processi non si avviano o si chiudono inaspettatamente

Verifica sempre il file stderr_log nella tua home, prima di contattare l'assistenza. Tutti gli eventuali errori di un processo vengono loggati in questo file.

... e se ho bisogno di piu' processi o address space ?

Nessun problema, vai nella sezione ordini del pannello di controllo e richiedi il plugin necessario. Se non sei in grado di valutare di cosa hai bisogno, contatta il supporto tecnico che effettuera' (ove possibile) le misurazioni del caso.

Risorse (l'ultima modifica รจ del 2010-02-23 11:50:56, fatta da RobertoDeIoris)