Heroku max。甚至升级到更高层后的RAM使用情况-超出R14内存配额

时间:2019-04-18 12:14:43

标签: python heroku flask ram heroku-postgres

我的dyno即将达到其RAM的极限,我不知道为什么。

我目前正在使用侦察器来跟踪内存并查找缺陷,但是只有1个函数会导致膨胀,并且响应时间很高,我也不知道为什么。响应时间约为5000毫秒,每请求5M分配,并且是74-77M内存膨胀的多次。

@app.route('/api/analytics_permission', methods=['POST'])
def analytics_permission():
    data_received = json.loads(request.data)
    project_id = data_received['project_id']

    project = Project.query.filter(Project.id == project_id).first()
    if project:

        permission_state_string = json.dumps(data_received['permission'])
        user_agent = data_received['user_agent']
        hostname = data_received['hostname']
        category = data_received['category']

        permission_state = PermissionState.default
        if permission_state_string == '"granted"':
            permission_state = PermissionState.granted
        elif permission_state_string == '"denied"':
            permission_state = PermissionState.denied

        permission = Permission(state=permission_state,
                                user_agent=user_agent,
                                hostname=hostname,
                                category=category)
        project.all_permissions.append(permission)

        db_session.add(project)
        db_session.add(permission)
        db_session.commit()

        return respond("Updated permission count", 200)

    return respond("analytics_permission: No project", 400)

def respond(message, code):
    """ Returns an API response """
    return make_response(json.dumps({'message': message}), code)

我已经联系了heroku支持部门,他们只建议我使用更多插件来跟踪使用情况。 无论流量的模式如何,我的应用程序一直在大约512MB RAM的情况下运行。

编辑:

我们使用了Hobby Basic tier postgreSQL数据库,它具有0 RAM。我们试图将数据库更新到具有4GB RAM的下一层,但是问题没有消失。

我们还尝试将测功机从业余爱好升级到标准1X或标准2X。 Standart 2X具有1GB RAM,但由于某些原因,直到我们收到R14 - Memory quota exceeded为止,即使是如此数量的RAM也能被完全使用。

使用2 x Standart 1X测功机也没有效果。

侦察兵告诉我们CPU使用率也很高,达到95%〜。

以下是heroku的指标:

enter image description here

enter image description here

根据侦察上面的功能(analytics_permission())会导致问题。

以下是侦察兵提供的一些数字: enter image description here

我们的理论:

analytics_permission()影响的表很大,它已经有10万行,并且analytics_permission()创建了新行,但是数据库应该处理此行,还是我错了?

0 个答案:

没有答案