我制作了一个非常简单的网络爬虫,将输出写入终端(stdout),因此我通常知道它的运行速度。在我分离tmux
并检查 MySQL 表后,脚本运行速度似乎变慢了。 (我应该打开第二个终端并比较tmux
分离之前/之后的速度。)
不管怎样,这让我想知道独立tmux
会话是否太“好”了。如果我往里面看,top
我真的不知道我在寻找什么。我明白了tmux
,但这真的是独立会话吗?我将如何改变分离tmux
会话的“友善度”?我会通过操作系统还是通过 来做到这一点tmux
?
答案1
回答您提出的问题:要更改现有流程的优点,请致电雷尼采。这是每个进程,而不是每个会话,因此 tmux 进程不直接相关。找到爬虫程序的进程ID(例如,ps x
在Linux上使用,或使用pstree
)并调用renice
它。
然而,这对你没有帮助,因为你做了两个错误的假设:
- 分离 tmux 会话会重新启动该过程 - 但事实并非如此。
- 网络爬虫的好坏会影响它的速度——这是极不可能的,限制因素几乎总是网络。
爬虫在一段时间后变慢的最可能原因是网站限制了您的 IP 地址,因为它根据自己的口味发出了太多请求。您对此无能为力(除非从一开始就尝试将您的请求间隔得更大一些,希望该网站能够减少对您的限制)。
或进程组,但这在这里不太可能有用。
答案2
您需要更改网络爬虫的优先级。不,不太可能是 tmux。 tmux 可能会有一个子 bash,其子项将是程序。
我通常会从程序名称中查找 pid,但除此之外,运行 pstree -p
应该允许您在不知道其名称的情况下分层查找它。
您可以使用 renice(1) 重新启动进程,例如:
renice 5 1234
或者。更详细地说,
renice -n 5 -p 1234
将进程 1234 调整为优先级 5
也可以从内部执行此操作top
,只需按r
并回答询问 pid 和新的好值的两个提示。