我有一个多线程的rails应用程序,它有许多工作人员,它们从重发队列和日志消息中提取消息。我已经将linux日志旋转以旋转日志,然后上传到S3。
在上传和删除文件之后,我看到磁盘空间仍然被使用,并且没有被释放。当我执行下面的命令时,我会看到很多文件。
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进程时,它才会释放空间。
我能知道什么是旋转日志的最佳方式吗?我应该如何避免这个问题?
发布于 2018-05-17 16:36:30
最后,下面的选项与日志旋转一起工作。无需终止或重新启动ruby进程。
/home/log/*.log {
maxsize 1M
missingok
rotate 20
notifempty
nocreate
copytruncate
su root root
}解决我问题的主要参数是
复制-复制日志文件,然后清空它。这确保日志文件Rails写入始终存在,这样您就不会遇到问题,因为文件实际上不会改变。如果不使用这个,那么每次都需要重新启动Rails应用程序。
发布于 2018-05-17 12:36:47
这里有一个解决方案,http://www.akitaonrails.com/2013/06/28/if-rotacao-de-logs-em-apps-rails#.UdTZ4T7wKeI使用记录器配置来旋转文件,例如:
config.logger = Logger.new(Rails.root.join("log",Rails.env + ".log"), 5, 100*1024*1024)https://stackoverflow.com/questions/50385911
复制相似问题