Performance 使用Catalyst perl MVC框架,每秒请求数较低

Performance 使用Catalyst perl MVC框架,每秒请求数较低,performance,perl,catalyst,Performance,Perl,Catalyst,我是网络应用开发的新手,我不知道什么样的RPS(每秒请求数)对动态网站来说是正常的,但是我认为我的应用非常慢 我现在正在学习Catalyst::Manual::Tutorial的第四部分,现在我有大约45个RPS用于从数据库中读取5-10个条目,只有大约3-5个RPS用于更新/创建/删除数据库中的数据。我正在使用教程中提到的所有工具,即SQLite3、Catalyst 5.90075和linux上的perl 5.18。在DB中,我有两个带数据的表(author和book)和一个链接表(autho

我是网络应用开发的新手,我不知道什么样的RPS(每秒请求数)对动态网站来说是正常的,但是我认为我的应用非常慢

我现在正在学习Catalyst::Manual::Tutorial的第四部分,现在我有大约45个RPS用于从数据库中读取5-10个条目,只有大约3-5个RPS用于更新/创建/删除数据库中的数据。我正在使用教程中提到的所有工具,即SQLite3、Catalyst 5.90075和linux上的perl 5.18。在DB中,我有两个带数据的表(author和book)和一个链接表(author_book),我的硬盘速度为120MiB/s,用于读/写和core i5 intel处理器


在我的应用程序中,我有2个控制器,1个模型和4个链式动作,使用的是development server(使用Starman获得了完全相同的结果,现在不要使用Apache尝试perl_mod)。假设我做错了什么。。。有人能帮助提高性能吗?

您应该将其添加到项目中,并获得代码不同部分的持续时间。这将使您能够找出什么是瓶颈。

您检查过内存了吗?它交换吗?不,我根本没有交换。我有4吉布的公羊。开发服务器需要大约100MB和Starman,具体取决于工作数量。我建议您在探查器上运行它,并查看所花费的时间。当涉及DB时,这些时间听起来很典型。当它是平面数据或缓存数据时,我最多可以得到250多个。您可以而且应该运行多个进程(受RAM限制),从而使有效的RPS倍增。uWSGI在几乎所有方面都比Starman好,并且可以与.psgi和Catalyst配合使用。好的,我发现Catalyst(默认情况下)使用DBIx的方式是,它为每个条目创建一个SELECT,而不是为所有条目创建一个SELECT。但为什么选择它作为默认行为呢?每个SELECT的成本约为2.2ms(来自NYTProf的信息,最昂贵的是sub-DBIx::Class::Storage::DBIHacks::_-resolve_-aliastypes_-from_-SELECT_-args),而且像Catalyst这样做成本极高。。。在插入的情况下,最昂贵的是DBI::st:execute(xsub),假设没有办法改进它(在插入的情况下)。。。另外,非常感谢NYTProf,非常好的工具