我有两台通过 LAN 连接的服务器。一台是 Apache,它处理并执行所有 php 请求。另一台仅是 MySQL,带有 11 GB 的数据库。
当我们有大约 10,000 名在线用户时,几天内一切都运行良好(负载约为 1.0)。当该数字达到约 20,000 时,Apache 的负载往往非常高,约为 1,000(最高可达 3,000),而 MySQL 负载保持在 2.0-3.0 左右...
另一方面,MySQL 充满了未完成的查询和睡眠进程。
我们还有一个 HTML 缓存引擎,它将缓冲区输出转换为 .html,并将其保存在服务器上。一个文件夹中有大约 50,000 个这样的 .html 文件...
大家觉得呢,为什么 Apache 负载突然上升,而 MySQL 却保持平静?
我如何测试哪些进程耗费最多时间,以及如何在问题解决之后模拟 20,000 人在线?
答案1
我用blitz.io模拟极端在线流量。
对于高流量网站来说,Apache 并不是最好的 Web 服务器。Nginx 或 litespeed 会更好,因为 Apache 是基于进程的服务器,而 nginx 是基于事件的 Web 服务器。