【问题标题】:Hosting questions for a "high" traffic rails application托管“高”交通轨道应用程序的问题
【发布时间】:2011-10-13 04:12:06
【问题描述】:

我有一个关于托管高流量 Rails 应用程序的问题。问题是我有 3 / 4 年的 Ruby on Rails 应用程序经验,但我以前从未有过高流量的网站。我真的很兴奋,因为这对我和我的同事来说是“下一个层次”。问题是我们没有使用 Rails 应用程序处理“高流量”的经验,首先让我在这种情况下定义“高流量”。

我们正在为荷兰领先的电信提供商之一和大约每天的访问者将是大约 400.000 名用户。我们正在使用 ruby​​ 1.9.2 和 Rails 3.1 进行编程。我们正在使用设备进行身份验证处理。但我们正在寻找一个可靠的一方来托管这个应用程序。我们正在研究 Heroku,但我不知道我需要什么以及我需要多少工人、测功机和/或专用数据库。我们需要流式传输电影,我们计划将它们托管在 amazon s3 存储桶上。

所以问题是我正在寻找有关 Heroku 和/或其他专业和可靠方的建议。关于 Rails 应用程序,我需要考虑哪些事项?

谢谢!

【问题讨论】:

    标签: heroku hosting ruby-on-rails-3.1 traffic high-traffic


    【解决方案1】:

    用测功机粗略计算很容易。

    测功机是单线程的,因此如果您的页面需要 200 毫秒来渲染,您可以每秒渲染 5 个页面。您需要计算出这 400,000 名用户每秒会创建多少页。然后你知道每秒有多少页被请求以及单个测功机可以处理什么。因此,您只需增加您的测功机计数,直到满足您的每秒用户请求数。

    例如 1 dyno @ 200ms = 5 页每秒 2 dynos @ 200ms = 10 页/秒

    等等等等。这只是一个大概的数字,因为还有其他因素,比如数据库性能等,但请放心,Heroku 适合这种类型的场景,因为它非常简单,所以添加更多的测功机来增加吞吐量。

    您需要将工作人员用于任何长时间运行的事件,例如发送电子邮件等,如果您的应用程序使用它们,第三方可能需要时间来响应和处理队列。

    一旦您使用超过 20Gb 的数据库,那么您就需要使用专用数据库,从客户那里听起来,每月 200 美元的入门数据库不会让他们在托管成本方面大汗淋漓。

    我错过了什么吗?如果我真的回复我,

    【讨论】:

    • with 1 dyno 你是指 web 还是 worker dyno?工人测功机做什么?我可以将其视为回形针上传过程和 rmagick / imagemagick 照片处理吗?
    • 所以有点混乱。它曾经是 dynos(用于网络)和 worker(用于后台工作)。在新堆栈“Cedar”上,您只有进程。工作人员应该用于可以在后台执行或可能需要很长时间的任何事情。如果您不这样做,那么在与网页相同的请求中调整图像大小等事情将意味着 dyno(或 Web 进程)在忙碌时无法处理其他内容。因此,如果在 30 秒内未收到响应,即将到来的请求将被排队并最终超时。
    • 感谢您的帮助!我还有一个关于安全的问题。有什么我需要考虑的吗?我需要让 id 随机且不可预测吗?最好的方法是什么?!
    • 这是一个非常广泛的问题。我通常总是使用默认整数作为 ID,你只需要确保因为你可以在 URL 中输入一个 id,那么执行该操作的用户就可以这样做,例如,如果它是他们的帐户,他们可以查看它等等。如果你遵循,你应该没问题。
    猜你喜欢
    • 2022-09-29
    • 2020-06-09
    • 2020-10-07
    • 2019-02-04
    • 2019-04-08
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多