2

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

我们有一个非常简单的 php 应用程序(没有框架,由 nginx 提供,使用 mysql)可以毫无问题地处理这个问题。无论用户如何,响应时间几乎都在 300 毫秒以上。

使用 Rails、puma 和 nginx 进行相同的测试,响应时间非常糟糕。在大约 500 个用户时,响应时间开始攀升至 1 秒,然后在 1000 左右时相对线性地攀升至 4 秒左右,在 2000 年左右为 6 秒。

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

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) 

我们对这整件事有点陌生,我不禁觉得我们错过了一些非常基本的东西,因为这似乎完全不合时宜。

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

任何我们错过的帮助、建议、明显的设置部分,将不胜感激。

谢谢你。

4

1 回答 1

1

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

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

使用 rails 和 PUMA 几乎无法处理大约 1000 个用户的同一台服务器能够轻松处理 3000 多个用户。

注意:这并不是说 PUMA 不能扩展,只是说对于我们的情况(一个同时运行 MYSQL 和应用程序的强大机器),php 表现得很好。

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

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

于 2014-03-14T20:04:59.077 回答