Ruby sinatra瘦应用程序的滞后问题

Ruby sinatra瘦应用程序的滞后问题,ruby,mongodb,sinatra,thin,Ruby,Mongodb,Sinatra,Thin,当交通流量有点高(30-40个用户)时,sinatra thin应用程序会出现一些奇怪的滞后问题。 这是一个使用长轮询的小游戏,因此与用户数量相比,http IOs可能更高 CPU负载保持较低,并且有大量可用内存 以下是发生滞后时的一些典型日志行: 1 - [17/Jul/2015:16:50:17 -0400] "POST /play?next=word HTTP/1.1" 200 1 0.0018 2 - [17/Jul/2015:16:50:17 -0400] "GET /update?_

当交通流量有点高(30-40个用户)时,sinatra thin应用程序会出现一些奇怪的滞后问题。 这是一个使用长轮询的小游戏,因此与用户数量相比,http IOs可能更高

CPU负载保持较低,并且有大量可用内存

以下是发生滞后时的一些典型日志行:

1 - [17/Jul/2015:16:50:17 -0400] "POST /play?next=word HTTP/1.1" 200 1 0.0018
2 - [17/Jul/2015:16:50:17 -0400] "GET /update?_=1437166100579 HTTP/1.1" 200 304 15.0046
3 - [17/Jul/2015:16:50:17 -0400] "GET /update?_=1437166102348 HTTP/1.1" 200 286 15.0045
4 - [17/Jul/2015:16:50:17 -0400] "POST /accept_replay? HTTP/1.1" 200 - 0.0021
5 - [17/Jul/2015:16:50:18 -0400] "GET /core HTTP/1.1" 200 3719 0.0015
6 - [17/Jul/2015:16:50:18 -0400] "GET /join HTTP/1.1" 302 - 0.0640
7 - [17/Jul/2015:16:50:18 -0400] "GET /core HTTP/1.1" 200 3719 0.0024
8 - [17/Jul/2015:16:50:19 -0400] "POST /play?next=word HTTP/1.1" 200 1 0.0034
9 - [17/Jul/2015:16:50:19 -0400] "GET /update?_=1437166215907 HTTP/1.1" 200 248 10.0018
10- [17/Jul/2015:16:50:19 -0400] "GET /update?_=1437166222579 HTTP/1.1" 200 252 11.0029
11- [17/Jul/2015:16:50:31 -0400] "GET /core HTTP/1.1" 200 3719 0.0034
12- [17/Jul/2015:16:50:31 -0400] "POST /sentiment/bad? HTTP/1.1" 200 - 0.0024
13- [17/Jul/2015:16:50:31 -0400] "GET / HTTP/1.1" 200 4449 0.0086
14- [17/Jul/2015:16:50:31 -0400] "POST /decline_replay HTTP/1.1" 302 - 0.0020
在[17/Jul/2015:16:50:31-0400]更准确地说是30

(get/update是长轮询请求,因此最多需要40秒) 在10到11之间,一切都会停止12秒。在这段时间内收到的所有请求似乎都是同时处理的

我用这种方式启动应用程序

thin start -p 80
这会是一个很小的问题吗? 我需要自定义精简配置文件吗? 我需要nginx吗

欢迎任何指示

编辑:
我在ObectSpace[SystemStackError,1][NoMemoryError,1][IOError,1]

中发现的错误这种行为闻起来很像请求队列,这意味着没有足够的web进程来处理传入的请求。因此,请求等待,然后积压被清除——它们突然都得到了超级快速的处理,并且一次处理完


这家伙写了一篇关于如何使用的好文章。

谢谢你的回答。我做了一些压力测试,100个探员随机玩。。。而且一切都很好(在比prod服务器小的VM上)。但是这些代理不使用长轮询请求。所以问题似乎就在这里。谢谢你的链接,我想它会有用的。