我有一个 ruby on rails 应用程序,其中运行着 mysql 和 mongodb(mongoid 框架)。
我使用 siege 测试了负载测试,-c 60 -r 10
在一个页面上设置了 2 个 stationsong 查找查询。每个查询花费超过 22 秒。这是查询:
QUERY database=**** collection=stationsongs selector={"$query"=>{"station_id"=>12812}, "$orderby"=>{"_id"=>-1}} flags=[] limit=10 skip=0 batch_size=nil fields=nil
两个站的歌曲发现查询是相同的(是的,我知道我应该将其合并到一个,但它仍然非常缓慢)
我的集合中只有 100 多万个,并且有 station_id 和 _id 的索引。VPS 有 4 个核心和 32 GB RAM。
为啥这么慢?!
答案1
这个问题比较复杂。它既涉及 VPS 的性能,也涉及 mongodb 上的索引。我添加了正确的索引,它修复了一些问题,但由于 CPU 速度慢,仍然有一些查询速度慢。因此,我转移到专用服务器,一切都解决了,现在响应时间不到 80 毫秒,而不是 22 秒。
VPS 上客户端负载过大,所以我的 CPU 有 60-70% 的电量被盗用了。