Rails Puma和3000个并发用户 - 像糖蜜一样慢

时间:2013-12-30 22:36:28

标签: ruby-on-rails puma response-time

我们正在使用Neustar来测试我们的服务器如何处理负载。我们的目标是吸引大约3000名并发用户。

我们有一个非常简单的php应用程序(没有框架,由nginx提供,使用mysql)处理这个没有问题。无论用户是否在300毫米以上,响应时间都接近平稳。

与Rails,puma和nginx相同的测试,响应时间为ABYSMAL。在大约500个用户的响应时间开始攀升到1秒,然后在1000左右,大约2000秒左右,相对线性攀升到大约4秒,并且大约在2000年左右。

当我查看日志时,我会收到报告,表明我们会在相当短的时间内做出响应:

Completed 200 OK in 8.8ms (Views: 0.2ms | ActiveRecord: 4.9ms)
Started GET "/sessions/319/questions/poll.json" for IPADDRESS at 2013-12-30 22:17:28 +0000
Processing by QuestionsController#poll as JSON
  Parameters: {"session_id"=>"319"}
Started GET "/sessions/319/questions/poll.json" for IPADDRESS at 2013-12-30 22:17:28 +0000
Processing by QuestionsController#poll as JSON
  Parameters: {"session_id"=>"319"}
Completed 200 OK in 436.0ms (Views: 208.8ms | ActiveRecord: 212.6ms)
Processing by QuestionsController#poll as JSON
  Parameters: {"session_id"=>"319"}
Started GET "/sessions/319/questions/get_current.json" for IPADDRESS at 2013-12-30 22:17:28 +0000
Started GET "/sessions/319/questions/poll.json" for IPADDRESS at 2013-12-30 22:17:28 +0000
Processing by QuestionsController#get_current as JSON
Completed 200 OK in 125.2ms (Views: 48.2ms | ActiveRecord: 63.4ms) 

我们对这件事情有点新意,我不禁觉得我们错过了一些非常基本的东西,因为这似乎完全没有了。

如果我能提供更多有用的信息,请告诉我。

我们非常感谢任何帮助,建议,我们错过的明显的设置部分。

谢谢。

1 个答案:

答案 0 :(得分:1)

这不是让PUMA满足我们要求的解决方案,但我认为我会给未来的读者一些关闭。

我们最终使用PHP,php-fpm和nginx。

使用rails和PUMA几乎无法处理大约1000名用户的同一台服务器很容易处理3000 +。

注意:这并不是说PUMA无法扩展,只是针对我们的情况(运行MYSQL和应用程序的单个强大的盒子),php充分执行。

我不确定为什么会这样,但我听说这是因为rails倾向于扩展ACROSS服务器(例如多个服务器),而PHP在垂直扩展方面做得更好。 / p>

如果有人有任何更正,补充信息或评论,我很乐意听到。