【发布时间】:2012-09-07 11:58:51
【问题描述】:
我的应用程序对其内部流程进行了大量测量。例如,我为某些方法计时,我为外部 Web 服务调用计时,我也有具有变化值的变量,以及具有“状态”的进程(例如 PAUSED、WAITING 等)。
应用程序使用 100 到 200 个线程,并且每一位数据都将与特定线程相关联。
我正在寻找一些软件,我可以将所有这些信息导入到该软件中,以生成有用的指标和数据图表(最好是实时或接近实时),让我设置触发警告的阈值,让我按线程或线程组等过滤数据。
应用程序正在执行时间紧迫的任务,因此软件/api 需要非常快并且永不阻塞。
应用程序是用 java 编写的,理想情况下软件/api 也应该是 java 的。我想我正在寻找的是所谓的事件流处理,但我真的不知道用什么语言来描述它。
到目前为止,我发现的只有 Esper 和 ERMA。有人可以给我推荐吗?我是唯一一个在这个项目上工作的人,所以我希望有一些很容易设置和使用的东西,并且有一个可行的前端。
【问题讨论】:
-
如果您有 100 到 200 个线程同时处理所有数据,并且您将其存储在任何东西(包括内存)中,那么在你的代码。
-
有趣的是,我之前没有考虑过内存IO阻塞。实际上只有 10-30 个线程实际上同时处理数据,其余的都在休眠。
-
其实还差不多。如果您有一台四核机器 (I5),则一次只能物理运行 4 个线程。如果您使用具有多线程 (I7) 的四核,则一次最多可以运行 8 个线程。不要忘记操作系统服务(即使在经过微调的系统上)也可以运行大约 30 个线程。因此,如果您尝试在 I7(8 个线程)之上的程序中运行 100 个线程,那么您的实际处理时间为 100/130 * 8(平均超过 6 个线程总是在处理)。从那里开始,您仍然必须添加阻塞 I/O 才能获得真正的时间。
标签: java logging analytics esper graphite