Consumo di memoria - ho bisogno di capire

13 contenuti / 0 new
Ultimo contenuto
Consumo di memoria - ho bisogno di capire

Non so se la sezione è quella giusta, in caso chiedo di cambiarla.

Ho un sito con molti moduli, circa 5000 nodi (ne ho cancellati più di 4000), aumentano di una 40 al giorno. Visite medie 1300/giorno
La ram a disposizione è di 32 mb.

Capita spesso che abbia errori php dovuti all'esaurimento dell ram a disposizione.

Non capisco una cosa. Supponiamo che un singolo utente carichi il mio sito, e solo lui, e supponiamo che drupal occupi in quell'istante 5mb di memoria. Se due utenti accedono al sito, consumeranno 10 mb? per cui in questa ipotesi potrei avere al più 6 utenti in contemporanea?

Non riesco a capire quando si esaurisce la memoria, ovvero come viene effettuata la somma e a partire da quali dati per arrivare a 32mb!

Dipende da cosa fanno gli utenti. Per esempio, il resizing di immagini è attività abbastanza dispendiosa.

Si, perfetto, pero' dico non capisco questo:

il memory limit di 32 mb a cosa è riferito?
alla singola istanza di un singolo utente
alla somma di tutte le istanza utilizzate in quell'istante, per cui 30 istanze occupano 30 volte la memoria di una
... non so altro!

Ti posto questa risposta che ho trovato nel forum di EastItaly.

Quote:
Il memory_limit è la quantità massima di memoria in byte che uno script è autorizzato ad utilizzare sul server su cui gira.
E' nata per prevenire che script scritti male ( e sono tanti ) utilizzino tutta la memoria disponibile su un server.

Per non avere limiti di memoria, basta impostare il memory_limit a -1.

Nelle versioni di PHP antecedenti alla 5.2.1, al fine di utilizzare tale direttiva, doveva essere attivato in fase di compilazione con-enable-memory-limit nel file di configurazione assieme all'obbligo di definire le funzioni memory_get_usage () e memory_get_peak_usage ().

Quando si usa un intero, il valore è misurato in byte.

Ad ogni modo puoi provare ad aumentarla impostando php_value memory_limit 64M nel file .htaccess

<a href="mailto:[email protected]" rel="nofollow">[email protected]</a> wrote:
Si, perfetto, pero' dico non capisco questo:

il memory limit di 32 mb a cosa è riferito?
alla singola istanza di un singolo utente
alla somma di tutte le istanza utilizzate in quell'istante, per cui 30 istanze occupano 30 volte la memoria di una
... non so altro!

Ciao, alla singola istanza di un singolo utente. Fai conto di avere 32MB per singola pagina caricata. Non importa che due pagine siano caricate dallo stesso utente in due tab diversi di Firefox. Sono sempre 32MB per singola pagina.

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

quindi se alzo il memory limit (tanto sono su uno shared hosting e non accadràà mai) potrei consentire l'esecuzione di pagine più pesanti, ma meno connessioni contemporanee perchè la memoria totale verrebbe divisa tra me utenti?

Quote:
ma meno connessioni contemporanee perchè la memoria totale verrebbe divisa tra me utenti?

Bella domanda,ho una mezza idea sulla risposta,ma avendo scarse conoscenze cosi tecniche attendo anche io delucidazioni sicure,onde evitare di sparare una grossa str...... ! :)

<a href="mailto:[email protected]" rel="nofollow">[email protected]</a> wrote:
quindi se alzo il memory limit (tanto sono su uno shared hosting e non accadràà mai) potrei consentire l'esecuzione di pagine più pesanti, ma meno connessioni contemporanee perchè la memoria totale verrebbe divisa tra me utenti?

Esatto. Piu' è alto il memory limiti e minore è il numero di richieste contemporanee che puoi avere (in rapporto alla tua ram). Molti hoster professionali come unbit.it (ad esempio) ti dicono gia' da subito quante istanze di php puoi processare contemporaneamente e con quale dimensione.

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

Prova come ti ho suggerito in alcuni shared hosting funziona in altri è bloccato. Ma se funziona... ;-)

PHP Dichiara esattamente:

Quote:

This sets the maximum amount of memory in bytes that a script is allowed to allocate. This helps prevent poorly written scripts for eating up all available memory on a server. Note that to have no memory limit, set this directive to -1.

Quindi il limite è per singolo script.
PHP da quanto ne so non pone un limite al numero di istanze contemporanee (perchè non credo nemmeno sia coscente di quante volte è istanziato) ma Apache conosce le istanze quindi solitamente gli hoster mettono delle limitazioni su apache (unbit ti conta i processi e vede se puoi fare ancora FORK())

ho capito. Grazie a tutti per le delucidazioni!

Un consiglio vi chiedo allora: avendo un sito con circa 1000+ visite, destinato a salire, non ho idea delle visite contemporanee, e con un numero di moduli la cui occupazione di memoria è maggiore talvolta di 32mb, voi dove andreste?

Il discorso è che l'hosting dove sono per ora va benissimo, eccezion fatta per il memory limit! Se solo fosse di 64mb...

Aziende Italia ha dei server virtuali gestiti ad un buon prezzo http://www.aziendeitalia.com/ ho un paio di siti in un server virtuale li e volano.

alexic @ drupal.org

e come sono impostazioni cach?
se vuoi dare una link sul sito... diventa piu chiaro.