2012-01-02 12 views
7

Fondamentalmente sto cercando di mantenere l'utilizzo della memoria sul mio server Nginx sotto una certa quantità, sia perché sono pazzo (secondo i miei amici) & Voglio risparmiare denaro. Tuttavia sono preoccupato che ImageMagick possa spingerlo oltre il limite.Limitare ImageMagick Memoria Utilizzare

sto usando -limit area 20MiB e ho anche provato -limit memory 15MiB -limit map 15MiB ma durante il controllo del processo (come funziona) attraverso top -c (with Shift-M) e ps aux si vede utilizzando, a volte, molto più di memoria rispetto Ho impostato nei limiti. Per dare numeri potrebbe usare 35MB o 40MB, invece dei 20MB/30MB mi aspetterei. Non sarei disturbato per 2MB o 3MB ma questo è un offset abbastanza grande.

Mi è stato detto che la memoria extra potrebbe essere il sovraccarico di ImageMagick mentre carica l'interprete, ecc., Ma non ho molta familiarità con i programmi Unix quindi non ho idea di quel dipartimento.

Se qualcuno può spiegare perché questo sta accadendo, sarebbe fantastico. Se è una cosa normale, grande. Mi limiterò ad aggiustare le cose per tenere conto del fatto che potrebbe usare il mio limite più una certa quantità, ma se non lo è e il parametro -limit non limita la memoria ad una certa quantità, qual è esattamente il punto di avere quel parametro in ImageMagick?

Ancora grazie per il vostro aiuto in anticipo, è molto apprezzato, come sempre.

+0

Nessuna idea a nessuno? Non è un grosso problema, ma mi piacerebbe che qualcuno potesse far luce su questo. – Vunus

risposta

2

Secondo la documentazione ImageMagick è in movimento tutte le operazioni di memoria per mmaped file, in modo che inizierà a scambiare se si dispone di sufficiente spazio su disco, consultare il manuale: SNIP da manuale -limit:

Il valore per File è in numero di file. Il limite del disco è in Gigabutes e i valori per le altre risorse sono in Megabyte. Con il valore predefinito di i limiti sono 768 file, 1024 MB di memoria, 4096 MB di mappa e disco illimitato, ma questi sono regolati all'avvio sulle piattaforme che possono fornire informazioni sulle risorse disponibili. Quando viene raggiunto il limite , ImageMagick fallirà in qualche modo, oppure intraprenderà le azioni di compensazione se possibile. Ad esempio, -limit memory 32 -limit map 64 limiti di memoria Quando la cache di pixel raggiunge il limite di memoria, lo utilizza la mappatura della memoria. Raggiunto quel limite, esso va al disco. Se il disco ha un limite rigido, il programma fallirà.

+0

Ho sicuramente abbastanza spazio su disco (50 GB +), ma sembra che stia usando la quantità impostata tramite il parametro -limit. Mi scuso per il grande ritardo nel commentare anche io, avevo dimenticato di aver posto la domanda come sembra che ImageMagick si stia comportando da solo nonostante questo sia ancora un problema. – Vunus

+0

Basta provare a installare da svn, forse la tua versione è bacata? – Arman

+0

Credo fosse collegato al sistema che il mio ospite stava usando. Da allora mi sono trasferito in un altro host dove posso installare ImageMagik e da quel momento ho lavorato senza problemi. – Vunus

2

I limiti interessano solo la cache di pixel di ImageMagick. Il codice del programma e tutto ciò che le librerie/delegate possono fare per caricare o elaborare le immagini non sono influenzati da queste impostazioni.

Non si specifica cosa si sta guardando in alto, la colonna corretta sarebbe ovviamente RES o RSIZE. Con limiti così piccoli come 20MiB, il codice del programma e della libreria rappresenterà una frazione significativa delle dimensioni del set residente.

Per verificare che si stiano utilizzando le unità corrette per le variabili di ambiente, utilizzare identify -list resource. Se la dimensione della cache dei pixel di memoria (MAGICK_MEMORY_LIMIT) non è sufficiente per un'immagine, verrà utilizzato un file mmap-edito (MAGICK_MAP_LIMIT) e se tale limite è troppo basso, verrà utilizzato un file disco convenzionale (MAGICK_DISK_LIMIT). Se tutti i limiti sono troppo bassi, ImageMagick verrà immediatamente a mancare con un errore come cache resources exhausted, Memory allocation failed o corrupt image.

+0

Quindi la memoria aggiuntiva utilizzata potrebbe effettivamente essere la libreria stessa caricata in memoria, sarebbe un extra di 10 MB circa giusto? Sto guardando RES di solito fa un extra di 8-10 MB sopra il mio limite impostato, quindi ho appena pensato che sia il sovraccarico del programma e ho regolato la memoria del mio server per adattarlo. Grazie per la risposta. – Vunus

Problemi correlati