我有一个 Web 应用程序,最近几天一直承受着高负载。该应用程序在具有8 核 Intel CPU和4GB RAM的单台服务器上运行。软件:在 Debian 上运行的 Drupal 5(Apache 2、PHP5、MySQL5)。
在达到 500 个经过身份验证的用户和 200 个匿名用户(同时)后,应用程序的性能急剧下降,直至完全失败。最大的负载来自经过身份验证的用户,他们执行活动,导致数据库上的插入/更新/删除。我认为mysql是一个瓶颈。对这么多用户放慢速度是否正常?
编辑:我忘了提到我做了某种分析。我运行了命令top, htop
,它们向我展示了 MySQL 正在使用所有内存!一段时间后,MySQL 开始运行非常缓慢,站点出现故障,我们必须重新启动/停止 apache 以减少负载。管理员说当时大约有 200 个活动的 mysql 连接。
最糟糕的一点是我们需要尽快解决这个问题,我无法进行深度剖析分析/代码重构,所以我正在考虑两种方法:
- 我的表是 MyIsam,我听说他们使用非常慢的表级锁定,对吗?我可以不用担心将其更改为 Innodb 吗?
- 如果我使用 MySQL,并将其移动到具有大量 RAM 的专用机器上怎么办?