您需要在logrotate之后重新启动solr守护进程吗?

您需要在logrotate之后重新启动solr守护进程吗?,solr,daemon,logrotate,Solr,Daemon,Logrotate,这是对以下问题的后续回答: 如上所述,我已经将solr作为守护进程运行。但我意识到它已经消耗了超过250GB的日志。我正在考虑使用logrotate来调整日志大小。在上面发布的logrotate conf文件中,有一个postrotate命令用于重新启动solr 我正在运行一些关键流程,这些流程总是向solr进行读写。所以我不想经常重启它。后旋转重新启动是否严格必要 更新: 我尝试了delaycompress,但没有重新启动守护进程。创建了一个新的日志文件,但solr一直在写入重命名为solr

这是对以下问题的后续回答:

如上所述,我已经将solr作为守护进程运行。但我意识到它已经消耗了超过250GB的日志。我正在考虑使用logrotate来调整日志大小。在上面发布的logrotate conf文件中,有一个postrotate命令用于重新启动solr

我正在运行一些关键流程,这些流程总是向solr进行读写。所以我不想经常重启它。后旋转重新启动是否严格必要

更新:

我尝试了delaycompress,但没有重新启动守护进程。创建了一个新的日志文件,但solr一直在写入重命名为solr.log.1的旧日志文件


我再试了一次,没有延迟压缩,现在solr.log和solr.log.1都是空的。但是df显示的磁盘使用率仍然与大量日志消失之前相同

磁盘使用率居高不下的原因是solr进程仍然有一个日志文件的打开文件句柄。尝试将copytruncate添加到您的logrotate.d中以用于solr,而不是postrotate重新启动。您需要重新启动solr,使其释放该句柄,并在磁盘上标记空闲块。

使用copytruncate,如果由于某种原因,复制速度慢、文件大小大/磁盘IO太重,那么中间日志行将丢失,或者在截断之前也会复制这些日志行。