我有一个CSV导入,它在大约11,000个名称的列表上通过各种进程运行。这个过程是在后台进行的,文件本身可以在2.5秒内上传。
问题是,Heroku给了我一个R12超时超过30秒。整个进程挂起,直到我得到一个应用程序错误。
如果我运行heroku logs
,则根本没有运行任何操作。
但是,我发现如果我运行heroku restart
,那么文件在不到5秒的时间内进入救援和后台,一切都很好。
所以我想象有某种用完的内存。是否有一种方法可以获得这些进程被消耗的统计数据?我知道Ruby没有手动GCC,但是有可能有些东西没有得到正确的垃圾收集吗?
您可以使用运行时指标日志记录,它经常将内存和CPU使用情况统计信息打印到每个运行进程的日志中。这可能会给你一些线索,让你知道超时是从哪里来的。
你可以像这样启用它:
$ heroku labs:enable log-runtime-metrics
$ heroku restart
查看Heroku文档获取更多信息