1

(我在用谷歌翻译)。

目前正在开发一个车辆系统(30,000 辆车辆,10,000 名用户),并且在此期间仅在本地环境中运行测试。

那么问题来了:当我发送到云服务器时,mysql现在消耗了100~140%的处理,使得站点下降大约5~30分钟。

我不知道如何解决这个问题,以便我无法识别他,因为在那之前一切都在本地主机上。

我的问题是这样的:如何使用 CakePHP 应用程序使系统过载?

有关表格的一些基本信息:

客户 -> 合同 -> 计划 -> 广告

广告 ->(车辆、零件、服务)

车辆 ->(品牌、型号、版本、类别、颜色、燃料)

横幅 -> 横幅频道 -> 本地横幅

关于申请的信息:

调试:0 启用缓存(每页 10-1 小时 *)

4

3 回答 3

5

根据我自己使用 CakePHP 和 MySQL(超过 250 个表)运行重型应用程序的经验,瓶颈在于对 CakePHP ORM 的使用不当。

有时,您会获取比您需要的更多的数据。

find('all')与高recursive价值相关的功能看起来很酷,并加快了开发时间。

但事实上,这可能真的很糟糕,尤其是当您的应用程序和数据库正在增长时。关联模型的数量也会增加,递归地获取越来越多的数据。

一个好的做法是始终指定您需要的字段。此外,对于特定查询,您应该取消绑定不需要的关联模型。

对于复杂的查询,不要犹豫,使用该query()函数手动编写优化查询。

在开发过程中,您应该启用 CakePHP 调试模式来分析Config/core.php文件中的 SQL 查询:Configure::write('debug', 2);这将帮助您找到最慢的。

优化您的查询是第一步。如果这不能解决您的问题,那么您的数据库可能设计得不好。

此外,您应该在生产环境中使用操作码缓存,例如APCXCache

于 2012-04-05T22:34:17.297 回答
2

如果您真的想知道为什么它太慢,请执行此操作,

  1. 配备Apache JMeter以生成负载
  2. 启用通过 xdebug分析您的 Web 应用程序
  3. 也配置您的网络服务器

如果您想快速阅读在高负载站点中使用 PHP 的策略

于 2012-04-05T20:57:49.547 回答
2

Matt Curry 的这本书可能会有所帮助:

http://www.pseudocoder.com/Super_Awesome_Advanced_CakePHP_Tips.pdf

@ 第 54 页 -> “让你的蛋糕应用程序快速”

于 2012-04-06T06:25:03.843 回答