2016-11-29 61 views
2

我們在centos服務器上使用Varnish緩存4.1,當我們開始清漆服務器很多清漆過程開始和它不關閉,由於這個問題我們正面臨內存泄漏問題,請讓我們知道我們如何解決這一問題清漆過程沒有關閉,並佔用大量內存

我的配置是:在/ etc/SYSCONFIG /清漆

#DAEMON_OPTS="-a :80 \ 
#    -T localhost:6082 \ 
#    -f /etc/varnish/default.vcl \ 
#    -S /etc/varnish/secret \ 
#    -p thread_pools=8 \ 
#    -p thread_pool_max=4000 \ 
#    -p thread_pool_add_delay=1 \ 
#    -p send_timeout=30 \ 
#    -p listen_depth=4096 \ 
#    -s malloc,2G" 

backend default { 
    .host = "127.0.0.1"; 
    .port = "8080"; 
    .probe = { 
     .url = "/"; 
     .interval = 5s; 
     .timeout = 1s; 
     .window = 5; 
     .threshold = 3; 
    } 
} 

34514 89208 83360 5 0.0 4.3 0:00.00/usr/sbin目錄/ varnishd -a:80 -f /等/varnish/default.vcl -T 127.0.0.1:6082 -t 120 -p線程池min = 50 -pt 1678清漆20 0 345M 89208 83360 S 0.0 4.3 0:00.03/usr/sbin/varnishd -a:80 -f /etc/varnish/default.vcl -T 127.0.0.1:60 82 -t 120 -p thread_pool_min = 50 -p•1679清漆20 0

回答

0

您不限制瞬態對象的空間。默認情況下,使用無限malloc(請參閱官方文檔:https://www.varnish-cache.org/docs/4.0/users-guide/storage-backends.html#transient-storage

從我在消息中看到的內容中,未使用參數DAEMON_OPT。 你的varnishd.service文件和/etc/varnish/varnish.params的內容是什麼?

編輯

沒事兒你的init.d腳本。它應該使用在/etc/sysconfig/varnish. 中找到的設置清漆消耗了多少內存? 所有的清漆線程共享相同的存儲(malloc 2G +瞬態malloc 100M),因此存儲需要2.1G的存儲空間。您需要爲緩存中存儲的每個對象添加1KB的平均開銷,以獲得使用的總內存。 我不認爲你正在遭受內存泄漏,這個過程是正常的。你告訴清漆產生50個過程(使用thread_pools參數),因此它們是預期的。

我建議減少thread_pools的數量,您將其設置爲50.您應該可以將其減少到2到8之間的某個值,同時它將有助於將thread_pool_max增加到5000並設置thread_pool_min到1000. 我們正在運行非常大的服務器,擁有2個池* 1000-5000個線程,並且沒有問題。

+0

謝謝,請用瞬態限制找到DAEMON_OPT,但我們仍面臨同樣的問題,並且我們在「/etc/varnish/varnish.params」中也沒有單獨的參數。 – Ajith

+0

謝謝。你的varnishd.service文件的內容是什麼,或者什麼是啓動你的varnish守護進程?我想知道使用哪些參數。 –

+0

請在此鏈接中找到/etc/init.d/varnish內容http://grabmydoctor.com/varnish.txt – Ajith