Ruby 这台机器慢得可怕

Ruby 这台机器慢得可怕,ruby,eventmachine,Ruby,Eventmachine,在我的应用程序中,send\u data方法严重滞后有什么原因吗?My telnet(许多其他客户端测试结果相同)窗口在显示发送的数据之前等待1-2秒 以下应用程序没有延迟: require 'eventmachine' class AreaServer < EventMachine::Connection attr_accessor :options, :status def receive_data(data) send_data("I got: #{data}\r

在我的应用程序中,
send\u data
方法严重滞后有什么原因吗?My telnet(许多其他客户端测试结果相同)窗口在显示发送的数据之前等待1-2秒

以下应用程序没有延迟:

require 'eventmachine'

class AreaServer < EventMachine::Connection
  attr_accessor :options, :status

  def receive_data(data)
    send_data("I got: #{data}\r\n")
  end
end

EM.run do
  EM.start_server '192.168.0.199', 4000, AreaServer do |conn|
    conn.options = {:my => 'options'}
    conn.status = :OK
  end
end
需要“eventmachine”
类AreaServer'options'}
连接状态=:正常
结束
结束

所以我怀疑这不是一个网络问题。

在写入之后,输出流似乎保持打开状态,所以我试图找到一个解决方案来关闭这个流

如果在写入
接收\u数据
后写入
关闭\u连接,\u,则流将在写入后关闭。我想你应该关掉“保持活力”选项

class AreaServer < EventMachine::Connection attr_accessor :options, :status def receive_data(data) send_data("I got: #{data}\n") close_connection_after_writing end end 类AreaServer那么在发送数据后,是否关闭连接?我不认为这会起作用,因为我正在编写一个MUD服务器:\首先,我只是想找到滞后的原因,现在我看到一些框架了解更多细节。现在我用telnet再次尝试,但它对我来说并不滞后。。。可能是网络问题?我的(更大的)应用程序滞后,但我包含的示例没有。这就是我怀疑这不是网络错误的主要原因。但是,我会通过在不同的机器上运行来确保情况并非如此。谢谢:)不知道。我已将您的代码粘贴到控制台(将“192…”替换为“127.0.0.1”,将端口替换为8001),它会立即通过telnet进行响应。@philpirozhkov:是的,这段代码工作得非常好。我说的是另一个项目(太长了,无法发布),它的延迟非常严重(延迟的不是代码,我的日志显示数据在收到之前发送了1-2秒)。我只是想知道我是否在发送数据时出错导致了延迟。发布你的延迟代码,我们将尝试找出问题所在