Play框架2在虚拟机上的性能问题

23

我最近在PHP和play框架上实现了一个非常小的Cassandra Web应用程序,以比较这些技术。我正在一个虚拟机上运行这些测试,该虚拟机中安装有Ubuntu-Server。在PHP和play框架应用程序中,只有一个URL可对Cassandra keyspace进行插入。

在PHP中,我运行了以下Apache基准测试:

ab -n 100000 -c 100 http://example.com/insert 测试结果显示服务器可以每秒处理120个请求

我使用Netflix的Astyanax Cassandra库在play框架中几乎制作了相同的应用程序。然而,服务器似乎甚至在ab的开始时就崩溃了。

我通过终端上的play start命令在生产环境中进行play框架测试。

所以,我知道play框架已经准备好投入生产。那么,我在这里做错了什么?


1
请问您能否提供有关您的虚拟机的更多细节(它可以使用多少RAM;Cassandra是否在同一台虚拟机中)?尽管我从未测量过,但我总是有印象Java应用程序使用大量内存。 - Salem
Cassandra、Play框架和Apache2都在同一台虚拟机上。它有2个核心CPU和2GB内存。因此,它比Amazon EC2微型实例更好。我正在使用PHP中的Thrift C扩展。这可能是区别所在吗? - aacanakin
1
我不熟悉那个库,但如果问题是出在库而不是框架上,我会去联系该库的邮件列表或IRC,看看他们是否遇到过这个问题。 - halfer
6
这只是一个大胆的猜测,但你是否设置了线程池?默认情况下,Play 只使用了一个小型的线程池,如果你的应用程序正在进行阻塞操作(据我所知 astyanax 不是异步库),这可能是导致它运行缓慢的原因。尝试查看 http://www.playframework.com/documentation/2.1.1/ScalaAsync 和 http://www.playframework.com/documentation/2.1.1/ThreadPools。 - Martin Kolinek
4
非常正确,我们在Play框架中也不得不增加到25个线程,并获得了巨大的性能提升。 - Dean Hiller
显示剩余9条评论
1个回答

1
问题出在每秒请求次数上,我没有设置线程池。当时,即使使用默认线程池,Play框架似乎仍然消耗了大量内存。- aacanakin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接