gpt4 book ai didi

drupal - 多少用户足以给Web应用程序带来沉重的负载

转载 作者:行者123 更新时间:2023-12-02 06:51:32 24 4
gpt4 key购买 nike

我有一个网络应用程序,最近几天负载很高。该应用程序在具有8 核 Intel CPU4GB RAM 的单个服务器上运行。软件:在 Debian 上运行的 Drupal 5(Apache 2、PHP5、MySQL5)

在达到 500 个经过身份验证的用户和 200 个匿名用户(同时)后,应用程序的性能急剧下降,直至完全失败。最大的负载来自经过身份验证的用户,他们执行事件,导致数据库上的插入/更新/删除。我认为mysql是一个瓶颈。这么大的用户量,速度变慢正常吗?

编辑:我忘了提及我做了某种分析。我运行了命令 top, htop,它们向我显示所有内存都被 MySQL 使用了!一段时间后,MySQL 开始执行速度非常慢,站点出现故障,我们必须重新启动/停止 apache 以减少负载。管理员表示,当时大约有 200 个活跃的 mysql 连接。

最糟糕的是我们需要尽快解决这个问题,我无法进行深入的性能分析/代码重构,所以我正在考虑两种方法:

  • 我的表是MyIsam,我听说他们使用表级锁定,速度很慢,是吗?我可以放心地将其更改为 Innodb 吗?
  • 如果我将 MySQL 移至具有大量 RAM 的专用计算机上会怎样?

最佳答案

不可能给出会导致任何随机应用程序速度减慢的具体用户数量。这完全取决于应用程序的功能及其运行方式。有很多事情需要注意。

  1. 分析。通过尽可能多的实际使用情况的分析器运行您的应用程序。最好的办法是使用自动化测试或一系列贯穿所有层的单元测试,以使分析 session 尽可能可重复。即使您在较低负载下分析应用程序,您也可以识别瓶颈并加以改进。您应该分析您的应用程序代码和 SQL 代码。

  2. 瓶颈。分析将告诉您哪些代码和/或查询占用了最多时间,修复这些问题将有很大帮助,但您还希望寻找可以避免的架构瓶颈。您是否有用户正在等待他们实际上不需要等待的写入?您可以使用生产者/消费者队列对某些非关键写入进行排队,以便应用程序可以更快地响应用户并将这些数据延迟刷新到数据库。是否有任何长时间运行的请求正在等待可以从异步处理中受益的其他外部资源?

  3. 缓存。是否有一些请求或数据可以缓存?即使这不是瓶颈,尽可能减少服务器上的负载也会有所帮助。特别是如果您有很多数据库争用并且可以在应用程序中缓存一些常用数据,那么您可以避免一些数据库往返。

  4. 内存数据。查看您的应用程序如何使用数据库,并查看数据库中是否有任何不需要的内容。如果是这样,将这些数据移动到内存数据结构(甚至内存数据库)将极大地提高性能。虽然这通常不太可能,但一旦实现,就会带来巨大的好处。

关于drupal - 多少用户足以给Web应用程序带来沉重的负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4486545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com