2014-11-06 766 views
0

我正在使用rsyslog通過TCP向遠程計算機發送消息。 Java服務正在寫入名爲local4的系統日誌中的記錄器。內存聖人從1MB開始,增長到4-5GB。我不知道如何調試這個問題,並找出Rsyslog內存如何以及如何減少內存。下面是我rsyslog.confrsyslog佔用大量內存

$ModLoad imuxsock # provides support for local system logging 
$ModLoad imklog # provides kernel logging support 

$ModLoad imudp 
$UDPServerRun 514 

$KLogPermitNonKernelFacility on 


$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat 

$RepeatedMsgReduction on 

$FileOwner syslog 
$FileGroup adm 
$FileCreateMode 0640 
$DirCreateMode 0755 
$Umask 0022 
$PrivDropToUser syslog 
$PrivDropToGroup syslog 

auth,authpriv.*     /var/log/auth.log 
*.*;auth,authpriv.none,local4.none    -/var/log/syslog 

mail.*       -/var/log/mail.log 



$template RTFormat,"%msg%\n" 
$WorkDirectory /var/lib/rsyslog # where to place spool files 
$ActionQueueFileName fwdRuleRTLogs1 # unique name prefix for spool files 
$ActionQueueMaxDiskSpace 1g # 4gb space limit (use as much as possible) 
$ActionQueueSaveOnShutdown on # save messages to disk on shutdown 
$ActionQueueType LinkedList # run asynchronously 
$ActionResumeRetryCount -1 # infinite retries if host is down 

$MaxMessageSize 5k 
local4.* @@internal-elb.amazonaws.com:5149;RTFormat 

任何幫助將是巨大的。

+0

嘗試使用jmap製作堆轉儲(http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html)並使用Eclipse Memory Analyzer進行分析:http:// www.eclipse.org/mat/ – 2014-11-06 06:00:37

+0

Java客戶端的內存使用情況非常穩定,但它是rsyslog的內存不斷增長。所以我不確定如果Java堆轉儲在那裏有很多用處? – 2014-11-06 06:41:21

+0

你說得對,我弄錯了。在這種情況下,Java堆轉儲不會幫助你。 – 2014-11-06 06:47:03

回答

1

此盒子是否從其他主機接收日誌?如果不是,則啓用UDP服務器不是必需的。 在收集日誌方面,這是一個客戶端還是服務器?

另外:你確定在TCP端點上收到日誌嗎? 有

$ActionResumeRetryCount -1

意味着所有的日誌將被存儲在磁盤上,但嘗試將它們運送到服務器時加載到內存中。