嘿,我的 mysql 上目前有超过300 多个 qps。在相当重的 PHP 网站上,每天大约有12000 个 UIP /没有 cron。我知道不看网站很难判断是否可以,但你认为这完全是矫枉过正吗?你的经验是什么?如果我优化脚本,你认为我能够大幅降低 qps 吗?我的意思是,如果我达到 200 qps,那将无济于事。谢谢
4 回答
目前在我的 mysql 上有超过 300+ qps
您的网站可以在 Via C3 上运行,对您有好处!
你认为这完全是矫枉过正吗?
那要看是不是
- 1 页/秒执行 300 次查询,是的,您遇到了问题。
- 30-60 页/秒,每个查询 5-10 个,那么你就没有问题。
每天 12000 个 UIP
我们有一个 50-60.000 的站点,它在 Via C3 上运行(与那个垃圾服务器相比,你的烤面包机是一个数据中心),但是 torrent 跟踪器使用了大约 50% 的 cpu,所以只有一半的小 cpu 可用于该网站似乎从未使用过它的任何重要部分。
你的经验是什么?
如果你想知道你是否要杀死你的服务器,或者你的网站是否被优化,下面的信息内容接近于零:
- UIP(除非你得到类似 facebook 的号码)
- 查询/秒(除非你高于 10.000)(我见过使用 postgres 的廉价双核爆炸 20.000 qps)
但以下是极其重要的:
- 动态页面/秒服务
- 每页查询数
- 每个查询的持续时间(全部)
- 服务器架构
- vmstat、iostat 输出
- 数据库日志
- 网络服务器日志
- 数据库自己的slow_query、锁和IO日志和统计
您没有关注正确的指标...
我认为你在这里错过了重点。如果 300+ qps 太多,很大程度上取决于网站本身、每秒访问该网站的用户数、同时运行的后台脚本等等。您应该能够测试和/或计算服务器的平均查询吞吐量,以了解 300+ qps 是否公平。而且,顺便说一句,这取决于这些查询的要求(几个字段,还是大量的二进制数据?)。
当然,如果您优化脚本和/或减少查询数量,您可以降低数据库的负载,但如果没有特定数据,我们将无法正确回答您的问题。要将 300+ qps 的负载降低到 200 qps 以下,您应该平均将总查询量至少降低 1/3。
优化脚本可以创造奇迹。通过优化对服务器的调用方式,我已经将之前需要 3 分钟到 0.5 秒的脚本处理了。当然,这是一种极端情况。如果可能的话,我将主要关注通过组合查询来最小化查询的数量。也许在您的查询中发挥创意,以在每次点击中包含更多信息。
从 300 到 200 qps 实际上是一个巨大的改进。您的服务器的流量下降了 33%……这很重要。
你不应该专注于脚本,专注于服务器。
您并不是说这 300 多个查询是否会导致问题。如果你的服务器没有死,没有理由降低金额。如果你已经做了优化,你应该专注于服务器。升级它或购买更多服务器。