gpt4 book ai didi

ruby-on-rails - 搜索 tmux 输出缓冲区时 Rails 卡住

转载 作者:行者123 更新时间:2023-12-03 10:59:32 26 4
gpt4 key购买 nike

我正在使用 tmux 在开发模式下运行 Rails 3.2.6。当我使用 tmux 滚动 Rails 服务器的输出缓冲区(使用 rails s 运行)时,服务器卡住并且不处理任何请求。当我退出回滚模式时,服务器再次开始正常工作。

在查看输出缓冲区时,如何设置服务器以继续处理请求?

最佳答案

如果您想在服务器继续处理请求的同时暂停并检查某些特定的日志消息序列,最好直接查看日志文件;您可能会使用 less -R log/development.log .

当 tmux Pane 处于“复制模式”(用于查看 Pane 历史记录的模式)时,tmux 不会读取 Pane tty 中运行的进程的任何输出。如果进程继续将输出写入 tty,那么 OS 的 tty 缓冲区最终将被填满。当程序写入一个缓冲区已满的 tty 时,它会导致进程阻塞,以便缓冲区不会溢出;这就是导致您的服务器暂时停止处理请求的原因。

时间线如下所示:

  • 您进入复制模式以查看一些旧输出。
    tmux 停止从 tty 读取。
  • 您的 Rails 服务器在处理正在进行的请求时会继续写入 tty。
    操作系统将这些写入吸收到一些有限大小的 tty 缓冲区中。
  • 最终,操作系统 tty 缓冲区填满并导致对 tty 的进一步写入阻塞。
    这是 Rails 服务器“卡住”的地方;它一直在等待操作系统从(例如)一个 write(2) 调用返回以显示日志消息。
  • 您退出复印模式。
    tmux 恢复从 tty 读取,耗尽缓冲输出并接受新输出。
  • 关于ruby-on-rails - 搜索 tmux 输出缓冲区时 Rails 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924365/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com