我刚刚进行了一系列测试,并发现它无法通过syslog-ng使用tcp连接处理大量数据。
以下是我的测试结果,供有兴趣的人尝试。 我使用了balabit的“loggen”程序,并将200字节的消息发送到由loggly分配给我的tcp端口。 请注意,尽管syslog RFC(至少是3164)规定日志消息不应超过1024字节,但我仅使用200字节的数据包以保持公平并因为许多消息都很小。
注册了一个免费账户。 配置了TCP连接进行测试。 尝试发送不同数量的数据,结果如下:
测试1:失败
loggen -iS -r 6000 -s 200 -I 100 logs.loggly.com 16225
Send error Broken pipe, results may be skewed.
average rate = 1392.13 msg/sec, count=18296, time=13.142, (average) msg size=200, bandwidth=271.74 kB/sec
测试2:失败
loggen -iS -r 4000 -s 200 -I 100 logs.loggly.com 16225
Send error Broken pipe, results may be skewed.
average rate = 2767.16 msg/sec, count=121146, time=43.779, (average) msg size=200, bandwidth=540.15 kB/sec
测试3: 失败
loggen -iS -r 2500 -s 200 -I 100 logs.loggly.com 16225
Send error Broken pipe, results may be skewed.
average rate = 1931.27 msg/sec, count=85878, time=44.467, (average) msg size=200, bandwidth=376.98 kB/sec
测试 4: 失败
loggen -iS -r 2000 -s 200 -I 100 logs.loggly.com 16225
Send error Broken pipe, results may be skewed.
average rate = 1617.72 msg/sec, count=83134, time=51.389, (average) msg size=200, bandwidth=315.78 kB/sec
测试 5:失败
loggen -iS -r 1000 -s 200 -I 100 logs.loggly.com 16225
Send error Broken pipe, results may be skewed.
average rate = 936.50 msg/sec, count=63331, time=67.624, (average) msg size=200, bandwidth=182.81 kB/sec
测试6:在配置时间范围内通过,超过100秒则失败 - 请查看测试7
loggen -iS -r 500 -s 200 -I 100 logs.loggly.com 16225
average rate = 325.00 msg/sec, count=32501, time=100.001, (average) msg size=200, bandwidth=63.44 kB/sec
测试7:失败 - 运行了一个新的测试,每秒500个事件并且持续时间更长,但管道在255秒后破裂了:
loggen -iS -r 500 -s 200 -I 10000 logs.loggly.com 16225
Send error Broken pipe, results may be skewed.
average rate = 323.35 msg/sec, count=82642, time=255.577, (average) msg size=200, bandwidth=63.12 kB/sec
测试8:失败(以更快的速度200EPS运行,但仍然失败)
loggen -iS -r 200 -s 200 -I 10000 logs.loggly.com 16225
Send error Broken pipe, results may be skewed.
average rate = 163.53 msg/sec, count=234090, time=1431.470, (average) msg size=200, bandwidth=31.92 kB/sec
测试9:失败(再次失败,运行时间更长但仍然失败)
loggen -iS -r 50 -s 200 -I 10000 logs.loggly.com 16225
Send error Broken pipe, results may be skewed.
average rate = 47.36 msg/sec, count=89325, time=1886.014, (average) msg size=200, bandwidth=9.25 kB/sec
测试10:失败?(结果相同,但又再次失去连接。难以相信他们无法处理10个EPS?)
loggen -iS -r 10 -s 200 -I 10000 logs.loggly.com 16225
Send error Broken pipe, results may be skewed.
average rate = 9.94 msg/sec, count=1568, time=157.770, (average) msg size=200, bandwidth=1.94 kB/sec
我查找了一些关于Loggly能做什么的信息,但只发现了一些宣传材料,说它是可扩展的,但没有说明其可扩展性有多高。 我找到了这个: http://twitter.com/jordansissel/status/5948244626509824 其中只有每秒22个事件...
完整声明:我是LogZilla的创始人,因此我正在测试竞争对手,因为我们正在推出基于云的syslog解决方案。 我的测试表明,我们的软件能够处理每秒2,000到12,000个事件,具体取决于在云中使用哪些服务器。
为什么?
因为所有我检查过的(虽然没检查完全)都使用同步磁盘写入!这会极大地降低性能。
所以如果你问我,你应该重新考虑你的需求,并只记录你真正需要的东西。
我进行了类似于Clayton answer中的测试,因为他的结果让我担心如果我同时发送太多消息,Loggly会丢失一些消息。我想看看克莱顿在2012年遇到的问题今天是否仍然存在。
话虽如此,以下是我在运行loggen 60秒生成每秒100,000条消息时发现的情况。
$ loggen -iS -r 100000 -s 200 -I 60 logs-01.loggly.com port
average rate = 34885.98 msg/sec, count=2093163, time=60.000, (average) msg size=200, bandwidth=6809.74 kB/sec
我也很好奇一些竞争对手在类似测试中会返回什么,我找到了以下内容:
loggen -iS -D -r 100000 -s 200 -I 60 logs2.papertrailapp.com PORT
average rate = 24344.71 msg/sec, count=1461327, time=60.026, (average) msg size=200, bandwidth=4752.09 kB/sec
$ loggen -iS -D -r 100000 -s 200 -I 60 api.logentries.com PORT
average rate = 14076.76 msg/sec, count=844609, time=60.000, (average) msg size=200, bandwidth=2747.78 kB/sec
显然,这些不是硬性数字,随着时间的推移系统会发生变化。这只是给我们一个参考点,告诉我们当我运行测试时它们如何响应。你的结果可能会有所不同!
更新:我对Loggly进行了近3小时的长时间测试,并收到了以下反馈:
loggen -iS -r 100000 -s 200 -I 10000 logs-01.loggly.com port
average rate = 15869.22 msg/sec, count=158692177, time=10000.000, (average) msg size=200, bandwidth=3097.67 kB/sec