1

我在WebfactionAWS EC2 微实例(613MB 的 RAM)服务器上运行 Django 应用程序。从过去的 2-3 个月开始,我面临内存超出限制的问题(目前只有 4-5 个用户在使用此应用程序)。由于内存超出限制,MySQL 和 APACHE 进程被杀死。我已采取以下步骤来减少内存消耗-

  1. 删除了“.all()”django 查询。
  2. 交换空间 1.5 GB。
  3. Apache 配置更改为:
    • 启动服务器 4
    • MinSpareServers 2
    • MaxSpareServers 4
    • 最大客户数 7
    • 服务器限制 7
    • MaxRequestsPerChild 0
  4. MySQL -> my.cnf 更改为:
    • 慢查询日志=1
    • 最大连接数=45
    • query_cache_size=16M
    • 表缓存=128
    • tmp_table_size=32M
    • max_heap_table_size=33554432
  5. 安装“Dozer”以查找内存泄漏(未报告任何问题)。

有人请告诉我,还有什么办法可以减少内存消耗。还让我知道,我如何跟踪 django 过滤器查询所花费的时间。

4

1 回答 1

1

你已经使用了django-debug-toolbar吗?它可以帮助您跟踪长时间或不需要的查询——这是针对本地环境的。

对于托管应用程序,请确保您已DEBUG设置为False. 启用调试模式后,Django 会跟踪所有无限查询。

如果它不能帮助搜索包含大数据结构的全局/类属性并将它们移动到缓存/数据库。

还要确保不要对视图/表单中的长列表进行排序或遍历非常长的查询集,因为所有这些都在实例中进入内存。尝试小批量进行。

于 2013-01-04T07:31:54.323 回答