2013-05-22 4 views
5

Ho la vernice in esecuzione con -s malloc, 25G, ma il processo continua a crescere fino a quando non consuma tutta la memoria del server e si blocca, riavviando la cache.Perché la vernice non tiene conto del limite di malloc?

Qualche idea su cosa posso controllare per vedere cosa c'è che non va?

Il server ha 16 core e 32 GB di RAM.
Sto usando vernice 3.

28346? Ss 0:16/usr/sbin/varnishd -P /var/run/varnishd.pid -a: 9290 -T localhost: 6082 -f /etc/varnish/default.vcl -s malloc, 25G -p thread_pools 16 -p thread_pool_min 160 -p thread_pool_max 16000 -p thread_pool_add_delay 2

Memory

Close up

risposta

7

il -s malloc,25Gonly limits the cache size, non la dimensione del processo varnishd.

È importante tenere presente che la dimensione specificata con l'argomento -s è la dimensione della cache effettiva. Varnish ha un overhead su questo per tenere traccia della cache, quindi l'effettivo ingombro di memoria di Varnish supererà quello che l'argomento '-s' specifica se la cache è piena. La stima corrente (soggetta a modifiche nelle singole versioni di Varnish) è quella di circa 1kB di spese generali necessarie per ciascun oggetto. Per 1 milione di oggetti, significa 1 GB di memoria extra.

Se si dispone di una cache di grandi dimensioni, è preferibile il backend .

1

La documentazione è corretta, ma il problema è ancora peggiore a causa della frammentazione della memoria. Per sicurezza, è necessario tenere da 1,5x a 2x la dimensione configurata per lo stivatore malloc