单个服务器每秒处理2000个HTTP请求是否现实?

时间:2011-10-13 13:55:32

标签: java json http servlets

我正在构建一个基于Java的Web服务(使用JSON作为数据编码),每秒需要处理多达2,000个HTTP请求。每个请求所需的处理几乎可以忽略不计(HashMap.put()方法调用),解析JSON可能是主要的开销。

我想知道单个高内存四倍超大EC2实例(68GB内存,8内核,64位)是否能够每秒处理多达2,000个HTTP请求?

我意识到确切的答案很难,我只是想知道这是否在可能性的范围内,或者我是否抽烟。

我目前正在使用SimpleWeb网络框架,虽然我注意到它目前似乎没有得到维护。人们可以推荐非常适合这种大批量使用的替代嵌入式HTTP服务器吗?

2 个答案:

答案 0 :(得分:2)

每秒2000次请求(或2 krps)应该完全符合Java servlet的可能性,前提是您不会引入巨大的瓶颈并且您使用的框架不会太多。鉴于您显然没有访问任何后端,任务应该受CPU限制,并且可以很好地扩展。

Web框架基准测试的JSON serialization测试显示了许多可以提供非常好结果的Java框架;即使20 database queries结果仍然超过2 krps。在亚马逊上,他们使用的m1.large个实例比您计划使用的实例小(c3.4xlarge,我收集)。

您可以尝试Undertow,它提供了一个方便的servlet API并且是well maintainedNetty是另一种可能性,尽管它有自己的API。

注意:我意识到问题有点陈旧,但问题应该仍然有效。

答案 1 :(得分:1)

这绝对是可能的,根据this questionNetty每秒可以处理超过10万次互动。一些JSON解析器可以将请求字符串转换为JSON对象,或者您甚至可以使用它的binaray变体BSON,如此处所述(如果消息很长或非常复杂)。从this question看起来,具有最新操作系统的服务器可以处理的连接数量超过30万,远远超过您的任务所需的连接数。

当然,这还取决于您需要采取哪些措施来处理可能是限制因素的请求。