我意识到我可能需要聘请专家来评估代码/等,但如果可能的话,我会喜欢一些第一轮的想法/输入;
在部署到专用的 32Core/96GB/SSD 服务器之前,我正在网站上运行负载测试。我之前做过一些,但只是测试 CPU/Mem 等
我能够为特定用户输入添加一个指标来映射加载时间。
我在 10 分钟内将一个保守的 500 名用户提升到了 500 名用户,稳定了 10 分钟,然后下降了 10 分钟。
CPU 显示永远不会超过 45%,内存永远不会超过 8%。
响应时间可以达到大约 100 个用户(250 毫秒),然后开始飙升到 25 秒。
奇怪的是,无论我在测试中有多少用户(20、50、100、250、500),我都会在 5 分钟的间隔内得到相同的失控峰值。
很明显(外行很清楚)服务器有足够的 CPU/内存,两者都不会被淹没。
所有测试中唯一的一致性是;a) 峰值每隔 5 分钟发生一次,b) 网络带宽同时出现 TANKS。
我可以理解带宽是否激增,我们是否超过了服务器容量和响应时间也下降了;但这是直接相关;带宽坦克,响应时间峰值,带宽攀升,响应时间(或多或少)恢复正常。
我们有 a) 优化的查询 b) 优化的表 c) 优化的 db d) 调整服务器大小两次 e) 检查核心查询的日志,它使用 Sphinx 来确认这些在毫秒内发生。
它似乎是浏览器,因为我们在负载测试期间确认特定查询需要 1 秒,显示时间需要 2 分钟。
在引入高度赞赏的大炮之前,任何关于正确方向的想法都会出现。
服务器是 CentOS 64 位,站点是 php/mysql/javascript/sphinx。