Java 雪松堆栈:什么请求占用dyno时间

Java 雪松堆栈:什么请求占用dyno时间,java,caching,heroku,cloud,cloud-hosting,Java,Caching,Heroku,Cloud,Cloud Hosting,我已经考虑过如何计算我能用Heroku和一个dyno处理多少用户。 但要想弄明白,我需要一些意见 我必须说,官方文档不便于浏览和解释,所以我还没有全部阅读。我对它的抱怨是它不能很好地描述事物。有时它描述旧的堆栈,有时它是特定于ruby的,有时它根本不被描述,等等 所以我需要一些关于Heroku,Cedar stack如何处理我的计算请求的信息 非常欢迎你纠正我的假设,因为我对dyno理论比较陌生 假设我有一个控制器,它接收一个请求并在本地10毫秒内计算一个JSON响应,我能每秒处理100个请求吗

我已经考虑过如何计算我能用Heroku和一个dyno处理多少用户。 但要想弄明白,我需要一些意见

我必须说,官方文档不便于浏览和解释,所以我还没有全部阅读。我对它的抱怨是它不能很好地描述事物。有时它描述旧的堆栈,有时它是特定于ruby的,有时它根本不被描述,等等

所以我需要一些关于Heroku,Cedar stack如何处理我的计算请求的信息

非常欢迎你纠正我的假设,因为我对dyno理论比较陌生

假设我有一个控制器,它接收一个请求并在本地10毫秒内计算一个JSON响应,我能每秒处理100个请求吗

据我所知,cedar stack没有前端缓存解决方案,因此出现了许多问题

  • 静态内容请求是否占用dyno时间
  • 传输时间是否计入请求时间
  • 如果请求需要较小的CPU利用率,一个dyno解决方案是否可以同时传输多个对请求的响应
  • 有些问题是相互交织的,所以一个综合的答案或其他想法是有价值的

    例如:

    静态HTML页面

    <HTML>...<img><css><script>...
    AjaxCall //dyno processing time 10ms
    AjaxCall //dyno processing time 10ms
    AjaxCall //dyno processing time 10ms
    AjaxCall //dyno processing time 10ms
    ...</HTML>
    
    。。。。。。
    AjaxCall//dyno处理时间10ms
    AjaxCall//dyno处理时间10ms
    AjaxCall//dyno处理时间10ms
    AjaxCall//dyno处理时间10ms
    ...
    
    我能每秒提供(1000ms/(10ms x 4))=25HTML页面吗?

    • 这假设静态内容不是由dyno提供的
    • 这是假设传输时间不归咎于dyno

    如果不是这样,我将是一场灾难。假设非洲的一部手机发出10个请求并有10秒的传输时间,那么我的应用程序将在1½分钟内不可用。

    我只能真正回答第一个问题:静态资产肯定会占用动态时间。事实上,我认为在使用heroku的免费软件包时,最好在资产服务器上保留所有的静态资产,包括样式表和JS。(如果每个人都这样做,heroku会受益,你也会受益)。我建议使用gem来处理这个问题。自述文件确实解释了当前存在一两个易于解决的问题

    关于你的最后一点,如果我在这里误解了,很抱歉,但是南非的用户可能需要10秒钟才能将他们的请求路由到Heroku,但大部分时间可能都花在SA和美国之间错综复杂的电话交换上。你的dyno只用于Heroku服务器中发生的部分请求,而不是你的请求到达那里所花费的9.9秒。所以实际上,Heroku不知道你的请求是来自南非还是瑞典


    你可以做各种各样的事情来加速你的应用程序:缓存,更多的动态,有几个工人的独角兽我只能真正回答第一个问题:静态资产肯定会占用动态时间。事实上,我认为在使用heroku的免费软件包时,最好在资产服务器上保留所有的静态资产,包括样式表和JS。(如果每个人都这样做,heroku会受益,你也会受益)。我建议使用gem来处理这个问题。自述文件确实解释了当前存在一两个易于解决的问题

    关于你的最后一点,如果我在这里误解了,很抱歉,但是南非的用户可能需要10秒钟才能将他们的请求路由到Heroku,但大部分时间可能都花在SA和美国之间错综复杂的电话交换上。你的dyno只用于Heroku服务器中发生的部分请求,而不是你的请求到达那里所花费的9.9秒。所以实际上,Heroku不知道你的请求是来自南非还是瑞典


    你可以做各种各样的事情来加速你的应用程序:缓存,更多的动态,有几个工人的独角兽你做了两个错误的假设。好消息是,一旦你以不同的方式思考问题,你的问题就会变得简单得多

    首先要记住,dyno是一个进程,而不是一个线程。如果您使用的是Java,那么您将使用许多请求线程。因此,您不必担心在处理请求时应用程序不可用。您将能够并行处理请求

    另外,在谈到动态时间时,它指的是进程正在运行的时间量,而不仅仅是请求处理时间。因此,等待请求的web进程仍然会占用dyno时间,因为该进程在等待请求时处于启动状态。这就是为什么你一个月可以得到750个免费dyno小时。您将能够在整个月(720小时)内运行单个dyno


    至于计算你的应用程序每秒可以服务多少个请求,最好的方法就是测试它。当您使用JMeter或您最喜欢的负载测试程序对应用程序进行负载测试时,您可以使用New Relic来监视应用程序:

    您做出了两个错误的假设。好消息是,一旦你以不同的方式思考问题,你的问题就会变得简单得多

    首先要记住,dyno是一个进程,而不是一个线程。如果您使用的是Java,那么您将使用许多请求线程。因此,您不必担心在处理请求时应用程序不可用。您将能够并行处理请求

    另外,在谈到动态时间时,它指的是进程正在运行的时间量,而不仅仅是请求处理时间。因此,等待请求的web进程仍然会占用dyno时间,因为该进程在等待请求时处于启动状态。这就是为什么你一个月可以得到750个免费dyno小时。你可以运行一个dyno