我正在开发一个用于基准测试目的的应用程序,为此我需要在短时间内创建大量的http连接,我在java中创建了一个程序来测试java能够创建多少线程,结果在我的2GB单核机器,限制在5000到6000之间变化,给JVM提供1 GB内存,然后在达到堆限制时达到内存错误。
建议erlang能够生成更多的并发进程,我愿意学习erlang,如果它能够解决问题,erlang能够生成大约100000个进程,这些进程本质上是等待的http请求响应,在几秒钟内没有达到任何限制,如内存错误等,
答案 0 :(得分:3)
根据着名的理查德·琼斯blog,您几乎可以开箱即可处理100k连接。您必须增加进程限制,请参阅+P
参数,它需要一点内存管理技巧,例如gc或hibernate。为了实现更多目标,你必须用C做更多的黑客攻击。
答案 1 :(得分:1)
它可以处理你扔的任何东西。 Erlang进程的重量非常轻。
有关Yaws和Apache之间的并发性基准,请参阅http://www.sics.se/~joe/apachevsyaws.html。它让你很好地了解可能性。
答案 2 :(得分:1)
我觉得有趣的是,一个人能够与mochiweb获得一百万个彗星连接http://www.metabrew.com/article/a-million-user-comet-application-with-mochiweb-part-1
答案 3 :(得分:1)
如前所述,很多都是一个很好的答案。而且鉴于您的要求是编写海啸客户端,您可以/应该将代码分发到多个erlang节点。
更好的是,您可能需要查看Tsung。它是用erlang编写的分布式负载测试应用程序。
如果您不想使用它,我很确定您想要在那里阅读的代码。