我们在centos服务器中使用Varnish缓存4.1,当我们启动Varnish服务器大量的清漆流程启动并且没有关闭时,由于这个问题我们面临内存泄漏问题,请告诉我们如何解决它
我的配置是:/ etc / sysconfig / varnish
CREATE TABLE #table(RefId INT IDENTITY(1,1) ,Id INT,Name VARCHAR(100),LName
VARCHAR(100),Cat VARCHAR(100),Price INT,Code VARCHAR(100),Dis INT
DEFAULT(0),SAl INT DEFAULT(0),LSal INT DEFAULT(0))
INSERT INTO #table(Id ,Name ,LName ,Cat ,Price ,Code ,Dis ,SAl ,LSal)
SELECT 3289,'The Butterfly Tree','Stitched','Shirts - Without
Embroidery',2600 ,'BGD' ,34 ,0 ,0 UNION ALL
SELECT 3289,'The Butterfly Tree','Stitched','Shirts - Without
Embroidery',2600 ,'CGD' ,0 ,0 ,0 UNION ALL
SELECT 3289,'The Butterfly Tree','Stitched','Shirts - Without
Embroidery',2600 ,'DMC' ,184 ,35 ,9 UNION ALL
SELECT 3289,'The Butterfly Tree','Stitched','Shirts - Without
Embroidery',2600 ,'DOL' ,187 ,24 ,6 UNION ALL
SELECT 3289,'The Butterfly Tree','Stitched','Shirts - Without
Embroidery',2600 ,'GUL' ,242 ,73 ,23
;WITH CTE AS
(
SELECT Id , CAST(Dis AS VARCHAR) + ',' + CAST(SAl AS VARCHAR)+ ',' +
CAST(LSal AS VARCHAR) AS Comb
FROM #table
)
SELECT DISTINCT Id , Name ,LName ,Cat ,Price,STUFF( ( SELECT ',' + Comb FROM
CTE WHERE #table.Id = CTE.Id FOR XML PATH('')),1,1,' ')
FROM #table
34514 89208 83360 5 0.0 4.3 0:00.00 / usr / sbin / varnishd -a:80 -f /etc/varnish/default.vcl -T 127.0.0.1:6082 -t 120 -p thread pool 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:6082 -t 120 -p thread_pool_min = 50 - p•1679清漆20 0
答案 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.
中的设置
清漆消耗了多少RAM?
所有清漆线程共享相同的存储(malloc 2G + Transient malloc 100M),因此存储时最多需要2.1G。您需要为缓存中存储的每个对象添加1KB的平均开销,以获得所使用的总内存。
我不认为你遭受内存泄漏,这个过程很正常。你告诉varnish产生了50个进程(带有thread_pools
参数)所以它们是预期的。
我建议减少thread_pools
的数量,你将它设置为50.你应该可以将它减少到2到8之间,同时它将有助于增加{thread_pool_max
1}}到5000并将thread_pool_min
设置为1000。
我们正在运行非常大的服务器,有2个池* 1000-5000个线程,没有问题。