Ciao a tutti!
Come da titolo, facendo un'operazione con CiviCRM, mi esce schermata bianca con questo messaggio:
Fatal error: Allowed memory size of 94371840 bytes exhausted (tried to allocate 393216 bytes) in /home/mioserver/miosito.com/sitotest/sites/all/modules/views/includes/view.inc on line 1506
Premetto che NON ho mai operato facendo delle aggiunte in termini di "bytes" come indicato da questi messaggi ma, andando alla riga 1506 di view.inc non vedo nessun "numero" da poter aumentare!
Alla riga 1506 c'è solo questa funzione:
function clone_view() {
$clone = version_compare(phpversion(), '5.0') < 0 ? $this : clone($this);
$keys = array('current_display', 'display_handler', 'build_info', 'built', 'executed', 'attachment_before', 'attachment_after', 'field', 'argument', 'filter', 'sort', 'relationship', 'query', 'inited', 'style_plugin', 'plugin_name', 'exposed_data', 'exposed_input', 'many_to_one_tables');
foreach ($keys as $key) {
if (isset($clone->$key)) {
unset($clone->$key);
}
}
Come e su cosa devo metter mano? ...premetto che sto girando su un VPS e ho il pieno controllo (credo...) di Apache o dei file sui quali dovrebbero essere fatte tali operazioni...
Grazie
Ciao
Kipper
mi è successo proprio ieri..
e onestamente non ne sono venuto a capo.
a me è successo dopo l'installazione di ctools.
son dovuto ripartire dall'inizio..
non saprei come aiutarti
Ti dice che ci sono 90MB di ram permessi ma sono stati superati.
...ed è (quasi) per puro caso che siano stati superati proprio a quel punto di views.inc.
premendo F5 spesso drupal si ferma da un'altra parte e ogni tanto completa l'operazione.
Voglio dire che non devi soffermarti su quel file/riga in particolare, devi piuttosto indagare cosa causa il consumo di risorse.
cmq, se sei su dreamhost, puoi aumentare la memoria almeno a 256M
Certified to Rock
Ciao Bohz,
Ho appena attivato un VPS su dreamhost con opzione 633MB... un fulmine! ...sono ancora in fase di prova e penso di acquistarlo domani... e dove la trovo l'opzione per aumentare sta memoria a 256MB? sarà una domanda stupida ma al momento non mi sembra di vedere opzioni per il settaggio sella memoria... questa schermata bianca e il messaggio mi appare con il "VPS 633MB" e quindi i 256MB li sto superando abbondantemente... oppure ci sono altre zone di settaggio!?
P.S. In effetti, nonostante la schermata bianca con quel messaggio, l'operazione viene effettuata con successo... dopo un refresh i dati/opzioni selezionate sono memorizzati/e...
Boh... se hai altre info...
Grazie
Ciao
Kipper
Ciao krima,
questo tuo intervento mi incuriosisce... la cosa strana è che l'operazione l'ho effettuata con il VPS settato a 633MB di ram... vorresti dire che devo aumentere la memoria PHP che su dreamhost è settata a 90MB di default indipendentemente dal fatto che sto "girando" col VPS di 633MB!? dovrei andare ad aumentare manualmente i 90MB in quel file di Apache che adesso non mi viene in mente...!?
Grazie a tutti per l'intervento!
Ciao
Kipper
http://wiki.dreamhost.com/Installing_PHP5
oppure installa il modulo drupal_tweaks (di sicuro funziona sullo shared hosting di DH, non so sulla vps)
oppure contatta il customer service via chat su come fare ad aumentare la memoria php sulla vps
Certified to Rock
Ok Bohz,
Grazie
Kipper
633M ti costano un bel po'...
comunque quella è la ram del sistema, se PHP è settato per 90M, sempre e solo 90M si prende.
prova con drupal_tweaks
Certified to Rock
Io non conosco come funziona dreamhost ma nei vps che uso io devo settare la ram dal file htaccess altrimenti rimane quella base impostata per ogni sito del vps. Questo indipendentemente dal fatto che il vps abbia 300MB di ram a disposizione o 1000MB.
Per settare la ram da htaccess (in base al massimo di ram che hai indicato) basta metterci: php_value memory_limit 633M
Poi anche aggiungere nel file settings.php: ini_set('memory_limit', '633M');
Il come spiegato da krima va bene, ma il valore no. Se 90MB non basta, metti 128MB, e controlla di nuovo. Poi usi Devel per controllare perchè la pagina usa cosi tanto memoria.
Se hai 633MB a disposizione per tutto; mailsend, FTP, MySQL, Apache, PHP, Drupal, non poi dedicare tutta la memoria a solo PHP. In più avrai probabilmente 5 processi Apache, quindi anche 128M è troppo...
Più imparo, più dubito.
Ha ragione John, attenzione a non esagerare: il parametro memory_limit non è la memoria disponibile per PHP ma la memoria disponibile per un singolo script in esecuzione.
Per esempio, se hai 10 visitatori sul tuo sito in un certo momento e memory_limit è impostato a 100M questo significa che CIASCUNO dei 10 processi PHP (che, semplificando un po', corrispondono ai tuoi 10 utenti) ha a disposizione un massimo di 100M. Nella stragrande maggioranza dei casi Drupal ne usa meno. Ma se tutti i tuoi 10 utenti decidono contemporaneamente di fare svolgere a Drupal un'operazione complessa (diciamo un'azione di Imagecache che preveda la fusione tra due immagini ad alta risoluzione, memoria necessaria 96M) la tua RAM si esaurisce, Linux comincia a usare lo swap e il tuo server passa un bruttissimo quarto d'ora.
Il memory_limit serve proprio ad evitare che uno script impazzito consumi tutta la memoria. Quindi metterlo uguale alla memoria disponibile è contro il suo scopo, a quel punto è come disabilitarlo (valore "-1", vedi http://php.net/manual/en/ini.core.php anche sugli altri parametri da modificare di conseguenza). Anch'io non andrei oltre i 128M come primo tentativo se 90M non basta.
http://nuvole.org
http://youthagora.org
Ok, ho capito il concetto, grazie a tutti...
dreamhost.com
Guaranteed 633 MB for $31.65/month.
...ci sono costi aggiuntivi qualora si dovesse superare qualche "soglia" di un qualsiasi tipo?
E' il cliente che paga e, visto che ci siamo (siccome è la prima volta che uso un VPS...) vorrei sapere:
1. Dove va a portare benefici 633MB di ram in confronto ai 300MB di base (for $15.00/month...)
2. Il sito tra non molto sarà abbastanza trafficato, forse i 300MB di base bastano... voi che dite? ...tanto si può sempre upgradare in qualsiasi momento...
Quindi un valore ragionevole quale potrebbe essere 96MB?
A proposito del modulo Devel, tempo fa l'ho installato ma mi uscivano degli strani "warning" (in nero...) a fondo pagina e allora l'ho tolto immediatamente, a qualcuno è successo? ...perchè quei warning?
Drupal tweaks cosa fa realmente? ...l'ho attivato su un'altro sito ma non va ad aumentare il memory limit del server ma di Drupal insomma, Drupal ha una sorta di memory limit al suo interno che, se aumentato con Drupal tweaks, potrebbe contribuire a migliorare "realmente" le varie performance generali?
Grazie
Ciao
Kipper
...un'altra cosa,
Usando CiviCRM importo regolarmente alcuni files *.CSV; dei contatti senza problemi ma, quando un file *.CSV; ne contiene molti, di più del solito (tipo 800/900...), durante la fase di upload (c'è una sorta di contatore che visualizza il numero dei contatti man mano che vengono caricati...), quando arriva più o meno intorno a 200/300, mi appare la classica schermata bianca (WSOD - White Screen of Death) che penso si riferisca a "maximum execution time or memory limit"...
Leggendo le features di "Drupal tweaks" dovrei poter aumentare questo limite e risolvere questo fastidioso problema ma sono un po diffidente su questo modulo... è sicuro? potrebbe creare problemi, visto che è ancora in DEV?
Kipper
ma qual è il sito?
In questo contesto fa quello che a te non serve, cioè cambiare parametri che tu su un VPS puoi cambiare con maggiore flessibilità in php.ini (ricordati di fare un restart/reload di Apache ovviamente, altrimenti cambiare php.ini non serve).
Non è vero, o meglio non esiste alcun limite di memoria specifico in Drupal. Drupal Tweaks cambia localmente le impostazioni di PHP, il memory_limit è sempre quello di PHP ma sul sito Drupal viene modificato. E' simile a quanto avviene per apache con httpd.conf e i file specializzati .htaccess, che dovresti conoscere bene se amministri un VPS.
http://nuvole.org
http://youthagora.org
Grazie, questa non la sapevo :-)
Pescetti wrote:
In questo contesto fa quello che a te non serve, cioè cambiare parametri che tu su un VPS puoi cambiare con maggiore flessibilità in php.ini (ricordati di fare un restart/reload di Apache ovviamente, altrimenti cambiare php.ini non serve).
Come immaginavo...
Grazie
Ciao
Kipper
Ciao Bohz,
Ho trovato la soluzione per "settare" praticamente tutti i parametri di "php.ini" su DreamHost - testato sia su Shared che VPS (suggerito da DreamHost in risposta ad un mio Ticket per settare "php.ini" sul VPS) e funziona alla grande!
post_max_size 20M o più...
post_max_size 20M o più...
memory_limit es. 128M o più...
aggiungere (io l'ho messo in fondo a php.ini...)> date.timezone ="Europe/Rome" a "php.ini" e il timezone viene effettivamente cambiato (di default è Los Angeles - questo è utile per CiviCRM!)
etc etc...
NOTA: Tutti i parametri vengono cambiati (a differenza di Drupal Tweaks...) sia su "Local Value" che su "Master Value"
1. Scaricare "DreamHost Custom PHP.INI" > http://sxi.sabrextreme.com/phpini
2. Uploare "dh-phpini.php" in > miosito.com/dh-phpini.php
3. Lanciare l'installer > http://www.miosito.com/dh-phpini.php
4. Click su "Install"
5. Nel file ".htaccess" vengono aggiunte queste righe al TOP:
#--- DH-PHP handlers ---
AddHandler fastcgi-script fcg fcgi fpl
AddHandler php-fastcgi .php
Action php-fastcgi /cgi-bin/dispatch.fcgi
6. L'installazione crea una cartella nel server "cgi-bin" con all'interno:
-test (folder/cartella)
--debug.txt
--info.php
dispatch.cgi
dispatch.fcgi
php.ini (quello da editare...)
7. Scaricare (download da FTP) "php.ini" - editarlo, e uploarlo sovrascrivendolo
8. Per rendere effettivi i cambiamenti:
- Accedere con Putty alla Shell
- touch ~/miosito.com/cgi-bin/dispatch.fcgi (senza eseguire "cd miosito.com" ma direttamente appena entrati con user e password...)
Per verificare i cambiamenti > http://www.miosito.com/cgi-bin/test/info.php
Enjoy DreamHost Custom PHP.INI!
Per disinstallarlo:
1. Cancellare semplicemente la cartella "cgi-bin" (il file "dh-phpini.php" viene cancellato automaticamente subito dopo l'installazione dello script...)
2. Eliminare nel file ".htaccess" nella root modificato durante l'installazione (vedi sopra...)
#--- DH-PHP handlers ---
AddHandler fastcgi-script fcg fcgi fpl
AddHandler php-fastcgi .php
Action php-fastcgi /cgi-bin/dispatch.fcgi
P.S. Ogni volta che si modifica "php.ini bisogna aggiornarlo sempre con:
touch ~/miosito.com/cgi-bin/dispatch.fcgi (una sorta di riavvio di Apache virtuale...)
Spero che sia utile a qualcuno
Ciao a tutti!
Kipper
Ciao
Ho corretto questo mio post perchè, leggendo meglio i precedenti, il discorso del settaggio del memory_limits credo sia descritto/risolto ampiamente da John e Pescetti qui:
http://www.drupalitalia.org/node/11165#comment-36587
http://www.drupalitalia.org/node/11165#comment-36591
Ma una cosa che non mi è ancora ben chiara è la seguente:
Se il memory_limits va settato al max a 128M (meglio 120M...) qual è la differenza di avere un VPS con 1000M - 2000M o 4000M - quali benefici porta avere così tanta ram sul VPS se, alla fine, il memory_limits non deve superare (in linea di massima...) i 120M ??? ...se con una memoria totale es. 1500M sul VPS, se portassi il memory_limits a 500M e, rimanendone di conseguenza 1000M per gli altri 5 processi (Apache, MySQL etc... come detto da John...) non va bene?
Devo dedurre che IN OGNI CASO il memory_limits non deve MAI superare i 120M indipendentemente dalle risorse (in MB...) del VPS?
Abbiate pazienza...
Ciao
Kipper
Ciao John,
John wrote:
Se hai 633MB a disposizione per tutto; mailsend, FTP, MySQL, Apache, PHP, Drupal, non poi dedicare tutta la memoria a solo PHP. In più avrai probabilmente 5 processi Apache, quindi anche 128M è troppo...
Vorrei sapere (sempre se possibile...), in linea di massima (se si può tirare, per così dire, una stima media...), quanta memoria "totale" si prendono (o possono prendersi all'incirca...) "mailsend, FTP, MySQL, Apache, PHP, Drupal e i 5 processi Apache" su un VPS tutti assieme...
Per fare un esempio che dovrebbe chiarire meglio dove voglio "arrivare" (visto che evidentemente non mi so spiegare... oppure sono duro di comprendonio...) se una stima (sempre come esempio) fosse: 700MB - con questo scenario prendo un VPS con 1.500MB di memoria, setto il "memory_limits" a 512M e mi avanzano 288M tanto per non stare "stretti" ...oppure sto sbagliando anche questa volta?
Grazie
Ciao
Giuliano
Pescetti wrote:
Il memory_limit serve proprio ad evitare che uno script impazzito consumi tutta la memoria. Quindi metterlo uguale alla memoria disponibile è contro il suo scopo, a quel punto è come disabilitarlo (valore "-1", vedi http://php.net/manual/en/ini.core.php anche sugli altri parametri da modificare di conseguenza). Anch'io non andrei oltre i 128M come primo tentativo se 90M non basta.
Ma se la memoria sul server abbonda, settare il memory_limits es. a 256M o 512M in questo modo si evita che uno script impazzito, superando il limite di memory_limits es. settato a 128M, faccia uscire la schermata bianca di memory esausted (che NON è simpatica da vedersi...) - credo che difficilmente tale script impazzito superi la soglia dei 512M o sbaglio?
Sto solo cercando di capire questo meccanismo... se sembro insistente me ne scuso e abbandono per sempre questo argomento...
Si, lo so, installo il modulo Devel... ma quello che voglio capire è il perchè, sentendo voi, sembra che sia VIETATO superare i 128M o giù di lì... è una regola fissa scritta da qualche parte su qualche manuale???
Voglio mettere ben in chiaro che sono consapevole del fatto che stò esponendo questi miei quesiti a persone che ne sanno mooolto più di mè... credo ci siamo capiti perfettamente...
Un cordiale saluto all'amico Pescetti...
Grazie
Ciao
Kipper
Non ho risposto prima perche non c'è risposta! Oltre al fatto che non ho mai dovuto analizzare la performance di una VPS (nemmeno il mio PC) come tutte le cose è parte scienza, parte arte, e parte esperienza.
Mailsend e FTP non creiano grande noia, perchè vengono usati pocco (spero).
Apache, PHP, Drupal puoi ridurre a Apache - perchè lui carica PHP e Drupal. Basta ricordare che girono più instanze di Apache - 5 o 10 di norma. Più instanze, più veloce la risposta ad una richiesta, ma richiede più memoria.
MySQL dipende di quanto sono grande le varie cache. Più grande, più veloce, ma richiede più memoria.
Poi parte della memoria è shared (l'interprete di PHP, librerie ecc) e parte dedicato ad ogni processo.
ps aux e top forniscono valore di 'pagine' VSZ e RSS. (http://mail.nl.linux.org/linux-mm/2003-03/msg00077.html) L'ultima cosa che vuoi che succede è che inizia a swappare memoria, quindi VSZ < RSS sempre.
A questo punto smetto, perchè inizio a non capire quello che dico... Sono solo un povero progammatore non un'analista di sistemi ;-)
Quindi controlla, modifica, e controlla di nuovo... Anche i più bravi di analisti di sistema iniziano col bagnare il dito per vedere da dove soffia il vento ;-)
HTH
John
Più imparo, più dubito.
Hai dato la risposta che mi aspettavo (e sospettavo...)
John wrote:
come tutte le cose è parte scienza, parte arte, e parte esperienza.
Grazie di nuovo...
Ciao
Kipper
C'è differenza tra uno script impazzito e uno script che richiede molta memoria. Uno script impazzito (cioè uno script che per un bug sta facendo una cosa sbagliata) magari continua ad allocare memoria, e può tranquillamente procedere all'infinito. Lo scopo di memory_limit è proprio che tu definisca qual è la soglia accettabile: con memory_limit stai dicendo che uno script che ha bisogno di più di X MByte di memoria va considerato impazzito e va fermato.
Ricorda che la soglia si applica per ogni singola istanza (cioè per ogni richiesta di ogni utente): il memory_limit è la dimensione della fetta di torta più grossa che un utente può prendere; se hai molti utenti lo devi abbassare, non alzare.
Nella mia esperienza a volte serve 128 MByte, limite che ho dovuto impostare per un sito -non pubblico- che usa Views in modo molto pesante. Ma non ho mai avuto bisogno di valori sopra i 128 MByte. Se tu hai schermate bianche anche con 128 MByte impostalo più alto, altrimenti 128 MByte va bene. E per quanto detto sopra non è vero che metterlo a 256 sia meglio: è meglio SOLO nel caso in cui alcune operazioni sul tuo sito abbiano davvero bisogno di tutta quella memoria.
http://nuvole.org
http://youthagora.org