我有一个托管在服务器机器上的 Rails 应用程序(运行 Webrick)。当我登录这台机器并访问应用程序(通过 localhost:3000)时,应用程序运行顺利。但是当我尝试从另一台机器(通过主机名:3000)访问应用程序时,应用程序运行速度非常慢。
我不确定如何调试问题;有什么理由会这样吗?我也有类似 SQL Server 数据库托管在同一台服务器机器上的东西,并且从其他机器访问数据库工作正常。
更新添加:服务器机器,以及我尝试从中访问它的其他机器,都在公司 Intranet 上。
我有一个托管在服务器机器上的 Rails 应用程序(运行 Webrick)。当我登录这台机器并访问应用程序(通过 localhost:3000)时,应用程序运行顺利。但是当我尝试从另一台机器(通过主机名:3000)访问应用程序时,应用程序运行速度非常慢。
我不确定如何调试问题;有什么理由会这样吗?我也有类似 SQL Server 数据库托管在同一台服务器机器上的东西,并且从其他机器访问数据库工作正常。
更新添加:服务器机器,以及我尝试从中访问它的其他机器,都在公司 Intranet 上。
以下答案对我有用。请注意,如果您正在运行 rvm,则答案在底部。
查找文件/usr/lib/ruby/1.9.1/webrick/config.rb
并进行编辑。
换行
:DoNotReverseLookup => nil,
和
:DoNotReverseLookup => true,
rvm 文件是~/.rvm/rubies/ruby-your-version/lib/ruby/your-version/webrick/config.rb
最明显的答案是问题不在于rails,而在于您的域托管(即您的DNS 超级慢)。
尝试加载不同的应用程序(可能是 Sinatra “hello world”),看看它是否表现出相同的症状。
如果是 - 你的域名提供商是罪魁祸首。
如果问题仍然存在,请增加日志的详细程度并检查是否有任何 SQL 查询是明显的瓶颈。
此外,问题可能出在 Webrick 上。它只是不适合生产,如果几个人同时使用该应用程序可能会很慢。尝试使用不同的服务器。Apache 是一个合理的选择:http ://www.modrails.com/
我迟到了,但你可以使用 Thin 而不是 Webrick。
只需添加到 Gemfile
gem 'thin'
Webrick 不是世界上最快的,我相当肯定它不是用于生产,而是用于本地测试。当您连接到另一台机器时,它是在本地网络上还是通过互联网?
查看您的 rails 日志文件中列出的响应时间。如果它们对于本地和远程访问是相同的,那么您就知道您的问题出在堆栈中的其他地方(DNS、路由、软件防火墙等)
问题很可能不是rails本身。