首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails记录器即使在删除日志文件之后也不释放日志文件;它一直占用磁盘空间。

Rails记录器即使在删除日志文件之后也不释放日志文件;它一直占用磁盘空间。
EN

Stack Overflow用户
提问于 2018-05-17 07:40:30
回答 2查看 508关注 0票数 2

我有一个多线程的rails应用程序,它有许多工作人员,它们从重发队列和日志消息中提取消息。我已经将linux日志旋转以旋转日志,然后上传到S3。

在上传和删除文件之后,我看到磁盘空间仍然被使用,并且没有被释放。当我执行下面的命令时,我会看到很多文件。

代码语言:javascript
复制
lsof | grep deleted
ruby      14530           fadmin    7w      REG              202,1 1972144092  407325 /home/log/production_database.log.1 (deleted)
ruby-time 14536 20352     fadmin    7w      REG              202,1 1972144092  407325 /home/log/production_database.log.1 (deleted)

它每次都会填满磁盘空间。只有当我杀死所有Ruby进程时,它才会释放空间。

我能知道什么是旋转日志的最佳方式吗?我应该如何避免这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-17 16:36:30

最后,下面的选项与日志旋转一起工作。无需终止或重新启动ruby进程。

代码语言:javascript
复制
/home/log/*.log {
    maxsize 1M
    missingok
    rotate 20
    notifempty
    nocreate
    copytruncate
    su root root
}

解决我问题的主要参数是

复制-复制日志文件,然后清空它。这确保日志文件Rails写入始终存在,这样您就不会遇到问题,因为文件实际上不会改变。如果不使用这个,那么每次都需要重新启动Rails应用程序。

票数 1
EN

Stack Overflow用户

发布于 2018-05-17 12:36:47

这里有一个解决方案,http://www.akitaonrails.com/2013/06/28/if-rotacao-de-logs-em-apps-rails#.UdTZ4T7wKeI使用记录器配置来旋转文件,例如:

代码语言:javascript
复制
config.logger = Logger.new(Rails.root.join("log",Rails.env + ".log"), 5, 100*1024*1024)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50385911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档