【问题标题】:Active Record extremely slow after being idle for a few hoursActive Record 空闲几个小时后速度极慢
【发布时间】:2011-02-17 15:31:00
【问题描述】:

我有一个 Rails 3 应用程序,在 SQLite 数据库中包含大约 11,000 行 Podcast 和大约 600,000 行 Episodes。它目前正在开发中,我是唯一访问服务器的客户端。

当我在一天结束时下班回家并首次请求播客的剧集视图时,该请求所需的时间大约是平时的 10 倍。但是,第二个请求需要正常的时间。

我并不十分担心这个特定问题,但我非常有信心它是我最终部署此应用程序时可能出现的其他问题的地方性问题。

我应该切换到 MySQL 还是 nosql 数据库?还有什么我可以做的吗?

编辑: 我应该补充一点,我正在运行 Mac OS X 网络共享,并将 Passenger 作为我的服务器。

谢谢,

哈里斯

【问题讨论】:

    标签: ruby-on-rails sqlite activerecord


    【解决方案1】:

    如果您使用Passenger 或某种应用程序启动器,您可能会发现Rails 进程在长时间空闲时会被剪掉。整个应用程序必须在第一次请求时重新启动,但之后会正常执行。

    这是流量不大的网站的典型情况。当然,您可以使用cron 工作和curl 人为地刺激一点流量。

    通常您可以通过查看您的进程列表并查看Rails 进程是否仍在运行来判断是否是这种情况。

    这甚至会影响没有数据库的应用程序。

    【讨论】:

    • 感谢您的帮助。你能解释一下“剪掉”是什么意思吗?
    • 如果Passenger 认为不再需要空闲进程,则终止它们。我相信如果可用的系统内存较少,这种情况会发生得更快,因为它会释放可能对其他进程有用的资源。
    猜你喜欢
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多