【问题标题】:Scalability of a php applicationphp 应用程序的可扩展性
【发布时间】:2011-05-29 08:45:27
【问题描述】:

我使用 cakephp 构建了我的应用程序。它工作正常。我的应用程序仍处于测试阶段,有 3000 个测试用户(基于邀请)。我想为更大的最终用户群扩展它。

关于我的应用程序的一些事情。

1) 我正在使用 mysql 数据库表有大约 25000 条记录。 2)多模型多多hasMany和belongsTo和HABTM关系

第一个问题。 1) 我怎样才能提高我的网站性能。 2)数据库查询的结果限制是多少(10s)。 4) 我应该将应用程序迁移到更新的技术或框架吗?

记录和关系的数量正在增长。

不到三个月前,我几乎没有 (MVC) 知识就开始使用 cakephp 应用程序。构建和测试应用程序非常容易。我会随时推荐给朋友。

感谢您的帮助。

谢谢。

【问题讨论】:

  • 使用MongoDB
  • 25k 记录是一个相当小的数据库,但如果您有可衡量的性能问题(而不是简单地担心可能性),请考虑优化您的 SQL 查询并确保你有适当的索引。
  • @sexypout 这是一些不好的建议,除非你是在讽刺地建议它。首先,乔希应该确定他的瓶颈在哪里。如果他的表索引正确,我高度怀疑他的数据库是目前的瓶颈。特别是使用蛋糕。即使数据库是瓶颈,只是说“使用 MongoDB”也有点赶时髦和狂热。
  • @sexypout, OP 提到的哪些具体问题,MongoDB 可以更好地解决什么问题,以什么方式解决?除了成为“网络级酱汁中的秘密成分”之外?
  • @sexypout 我使用 Mongo,所以我并不反对它。我反对你的油嘴滑舌的回应,好像 Mongo 会解决他所有的问题。在这种情况下,CakePHP 是他的瓶颈,而不是数据存储层。您的回答对这个问题没有任何补充。

标签: php performance cakephp scalability


【解决方案1】:

我怎样才能提高我的网站性能?

很难说不知道瓶颈在哪里。一种方法是:

  1. 首先优化您的 SQL 查询,启用慢查询日志记录并检查它们,正确索引列,并在需要时更改 SQL 服务器的配置。

  2. Profile PHP 执行,分析报告并确保在需要的地方重构代码。

  3. 介绍缓存、平面文件、SQL 缓存、APCMemcache 等(只是不要一起使用它们:)

  4. 优化服务器配置,包括软件和硬件。

  5. 移动到多台服务器。

数据库查询的结果限制是多少(10s)?

你是说执行时间?尽可能快:) 但话又说回来,取决于查询本身。如果查询每天执行一次,它可能会比每次请求都执行要慢。时间取决于上面的第一个问题/答案。

我应该将应用程序迁移到更新的技术或框架吗?

这个很难回答。同样,这取决于问题是什么以及您是否可以识别和修复它们。如果你可以通过优化查询和数据库、缓存等来解决它们,那么问题不在框架上。我强烈建议在切换到另一种技术或重写代码之前彻底考虑一下。

【讨论】:

  • 优秀提示,用于提高一般应用程序性能。和我一样多地使用 Cake,我认为这里的瓶颈将出现在 PHP/Cake 层(cake is slooooooow)。 WRT cake 有一些简单的技巧可以让你的应用程序加速高达 100%。
【解决方案2】:

通过 google 快速搜索,我们找到了以下站点,这些站点都致力于显着提高 CakePHP 的速度。另外,我对 Cake 的速度有以下几点看法:

  1. 确保您使用的是最新的 Cake 版本。从 Cake 1.2 到 1.3 的更新为我最大的应用程序带来了大约 20% 的速度提升。
  2. 确保您已打开缓存(对于大多数读取密集型应用程序,这将有很大帮助)。
  3. 如果您有很多相关但不经常使用的模型,请尝试延迟加载这些模型。

请记住,Cake 并不是真正为速度而设计的。这里的其他答案适用于一般情况,但对于 CakePHP,瓶颈通常是 Web 层。因此,一种(相当简单的)横向扩展方法是通过代理服务器加载页面,该代理服务器将请求传递到后端处理场。

另外,我强烈建议您分析您的代码。这意味着使用像 Zend 这样的 IDE,您可以在其中插入断点来确定代码的慢速部分。至少安装 Cake 调试工具栏,它会显示应用程序主要部分的执行时间(请求处理程序加载、控制器执行、视图渲染时间等)

谷歌搜索“优化 CakePHP 以提高速度”的结果:

【讨论】:

  • 我担心我的网站是否可以处理额外的流量并且不会让最终用户在等待页面加载时感到沮丧。感谢您的反馈,我一定会调查的。
  • 我建议您使用系统监控工具以及负载测试工具,以便您了解应用程序的限制。负载测试是提前完成的,所以你可以说,“我们可以通过这个设置支持 N 个用户,同时保持响应时间低于 2 秒”。监控服务将帮助您对资源使用情况进行建模。将两者结合起来,您就可以有效地预测服务器负载将达到峰值和响应时间增加的时间点。
猜你喜欢
  • 1970-01-01
  • 2015-05-25
  • 2011-03-28
  • 2014-09-13
  • 2014-12-28
  • 1970-01-01
  • 2011-07-09
  • 2015-07-09
  • 2012-07-30
相关资源
最近更新 更多