Ответ 1
Если вы хотите приостановить и изучить в определенной последовательности сообщений журнала, пока ваш сервер продолжает обрабатывать запросы, вероятно, лучше всего непосредственно просмотреть файлы журнала; вы можете использовать less -R log/development.log
.
В то время как панель tmux находится в режиме копирования (режим, используемый для просмотра истории панелей), tmux не считывает никакого вывода из процессов, запущенных в панелях tty. Если процессы продолжают записывать выходные данные в tty, тогда буфер ts OS будет в конечном итоге заполняться. Когда программа записывает в tty с полным буфером, это заставляет процесс блокировать, чтобы буфер не переполнялся; это то, что заставляет ваш сервер временно останавливать запросы на обработку.
Временная шкала выглядит так:
- Вы вводите режим копирования, чтобы просмотреть какой-то старый вывод.
tmux перестает читать из tty. - Сервер Rails продолжает записывать в tty, поскольку он обрабатывает текущие запросы.
ОС поглощает эти записи в буфере tty с ограниченным размером. - В конце концов буфер OS tty заполняется и вызывает дальнейшую запись в tty для блокировки.
Здесь сервер Rails "зависает"; он застрял, ожидая, когда ОС вернется из (например) вызова записи (2), который он сделал, для отображения сообщения журнала. - Вы выходите из режима копирования.
tmux возобновляет чтение с tty, истощает буферный выход и принимает новый выход.