My App Engine应用程序存在内存泄漏问题。 我记录了内存使用情况以找到问题。
from google.appengine.api.runtime import memory_usage
memory_usage().current()
超出“128 MB的软私有内存限制”的功能在延迟任务范围内。它每次都应该表现相同。 我从控制台任务队列(后端)和前端通过get-request重新运行它。两者都在第6个日志之后获得异常。
结果不同是我无法绕过的方式:
<Frontend-run>
1: 40.3515625
2: 50.3515625
3: 59.71875
4: 63.5234375
5: 72.49609375
6: 75.48046875
<Backend-run>
1: 98.83203125
2: 98.83203125
3: 98.83203125
4: 98.83203125
5: 98.83203125
6: 98.83203125
结果有三个问题:
任何人都可以为我理解这一点吗?
答案 0 :(得分:1)
除了根据与其处理的请求相关的实际活动所期望的内存使用情况,实例还具有可变的交叉请求内存使用偏移量,例如:
库的按需加载是改善实例启动时间的典型方法。这种技术将导致内存泄漏,但并不一定意味着它确实是内存泄漏。
128M对于一个应用程序来说也是不够的(你会惊讶地发现实际需要多少而且128M不是很多!),升级实例类型是前进的唯一方法。你现在可以尝试并监控使用情况 - 6个请求是恕我直言,不足以建立一个模式 - 如果你升级,你看到内存使用最终趋于稳定,那么你很可能需要升级。如果它没有平衡,那么你可能实际上有内存泄漏。