【问题标题】:Monitoring of a process performance implications?监控过程性能影响?
【发布时间】:2011-06-24 14:38:04
【问题描述】:

我有 3 台服务器,它们的进程需要它们可以获得的所有 CPU。我让这些进程将它们的标准输出写入文件

./run.sh > run.log

这样写会减慢这个过程吗? (./run.sh 脚本启动,例如一个 Java 程序,有时是一个 Ruby 程序)

现在我想创建一个 Web 界面,它会在脚本运行时显示脚本的输出。我可以想象编写一个每 5 秒刷新一次的 php 脚本,创建与服务器的 SSH 连接并获取 run.log 文件。

但这不会干扰或减慢进程吗? 服务器能够尽可能多地使用它的能力真的很重要。或者有更好的方法来处理这个问题吗?不是每 5 秒创建一个 SSH 连接,而是一个持久连接并使用 Ajax 更新? (安全不是要求)

【问题讨论】:

  • 如果你这么担心的话,你一开始就不应该使用 Java 或 Ruby。
  • 学习 C 的麻烦并不是那么重要 :) 工作的核心也是使用 EclipseCLP 完成的,Java 和 Ruby 用于指导一切。目前,考虑到时间限制,这是最好的解决方案。

标签: php ajax linux performance monitoring


【解决方案1】:

这样写会减慢这个过程吗? (./run.sh 脚本启动,例如一个 Java 程序,有时是一个 Ruby 程序)

也许;如果进程写入大量数据,它很容易减慢进程,因为进程很可能会同步写入磁盘。否则,您不必担心。

另一种方法是设置脚本通过某种消息服务将输出发送到带有 Web 应用程序的机器。这样可以避免轮询服务器;是否会更有效,取决于细节。

一种简单有效的机制是将标准输出转发到 UDP 套接字,让 Web 应用程序侦听这些消息并将这些消息临时存储在循环缓冲区中。

【讨论】:

  • 感谢您的回答,有没有简单的方法可以做到这一点?通过套接字发送输出会比写出来更快吗?数据不多,每 +-30 秒写入大约 40 行输出
  • 每 30 秒输出 40 行,我不会担心性能下降......我虽然你说的数据远不止这些。要回答您的问题,我真的不知道什么更快,但是通过 UDP 套接字发送数据将具有您不必轮询服务器的优势,这可能会使事情变得更简单。您可以使用ncat 轻松创建侦听和发送 UDP 套接字。
  • 酷!感谢您的回复,我在 Google 上搜索了一下,现在我正在使用 netcat 将我的进程输出发送到 loggly :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多