【发布时间】:2013-06-11 13:56:26
【问题描述】:
我最近在 PHP 和 play 框架上实现了一个非常小的 Cassandra Web 应用程序来比较这些技术。我在具有 ubuntu-server 的虚拟机上运行这些测试。在 PHP 和 play 框架应用程序中,只有一个 URL 可以插入 Cassandra 键空间。
在 PHP 中,我运行了以下 apache 基准测试;
ab -n 100000 -c 100 http://example.com/insert
测试结果表明服务器可以服务120#/sec(requests per sec)
我使用 Netflix 的 Astyanax Cassandra 库在播放框架中制作了几乎相同的应用程序。但是,即使在ab 的开头,服务器似乎也很崩溃。
我正在通过终端上的play start 命令在生产环境中进行播放框架测试。
所以,我知道播放框架已准备好生产。那么,我在这里做错了什么?
【问题讨论】:
-
您能否添加有关您的 VM 的更多详细信息(它可以使用多少 RAM;cassandra 是否在同一个 VM 中?)。尽管我从未测量过它,但我一直觉得 Java 应用程序占用了大量内存。
-
cassandra & play framework & apache2 在同一个虚拟机中。它有 2 个核心 cpu 和 2gb 内存。所以,它比amazon ec2 micro好。我在 php 中使用 Thrift C 扩展。会是这样的区别吗?
-
我不熟悉那个库,但如果问题是库而不是框架,我会联系库的邮件列表或 IRC,看看他们是否遇到过。跨度>
-
这里只是一个疯狂的猜测,但您是否设置了线程池? Play 默认情况下只使用一个小线程池,如果您的应用程序正在执行阻塞操作(astyanax 不是异步库 afaik),这可能是它看起来如此缓慢的原因。试试看playframework.com/documentation/2.1.1/ScalaAsync 和playframework.com/documentation/2.1.1/ThreadPools
-
非常正确,我们也必须在 playframework 中使用 25 个线程并获得巨大的性能提升。
标签: playframework cassandra astyanax phpcassa