服务器内存占用持续增加问题解决
使用定时任务或者loop do方式运行脚本任务,发现脚本占用内存一天比一天高;使用脚本运行完赋值变量为空也不能解决问题,因此就借助了系统的crontab定时任务,配置crontab需要注意的问题:
注意:linux中, 1 表示 stdout, 0 表示 stdin , 2表示stderr. 2>&1 表示把出错的内容打到正常的日志中。 所以,上面的 代码表示,把所有的日志(stdout, stderr 的)都pipe到 /var/log/cron.log 中
其中 “>> /var/log/cron.log 2>&1 ”可以省略不写,如果想看运行日志则需要指定打印的日志位置
1、在crontab中运行rbenv任务需要加载环境的命令:需要直接export 变量。 不能用source , 会找不到。
* * * * * export PATH="$HOME/.rbenv/bin:$PATH" ; eval "$(rbenv init -)"; ruby /opt/keep_rails_running.rb >> /var/log/cron.log 2>&1
这里需要注意的是,需要进入的执行脚本项目的根目录下,然后按照正常的ruby运行脚本命令运行脚本,例如:(晚上23点30分运行脚本)
30 23 * * * export PATH="$HOME/.rbenv/bin:$PATH" ; eval "$(rbenv init -)"; cd /app/my_app/ && bundle exec ruby scripts/puts_today_time.rb
2、如果未指定crontab日志文件路径,则需要到/var/log路径下查看syslog文件;
我操作过程中才到的坑(因为系统加了时区设置,因此一直想着是时区的时间导致配置一直未执行),crontab时间和系统是否设置时区不相关,crontab还是按照服务器当前的时间;
3、查看 /var/spool/mail/路径下当前登录用户 文件,就可以看到具体的报错信息,根据报错信息就可以修改配置