我正在写一份商业计划,我必须模拟当我的网站有 500,000 个独立访问者时的成本。
- 访客:50万
- 浏览量:1,500,000
- 蜘蛛浏览量:500,000
- 总浏览量:2,000,000
每个页面执行 50 次查询 +-
- 每日查询量:1 亿次
- 每小时:400万
- 每分钟:70,000
- 每秒:1,200
- 高峰:3,000
进行这个计算我每秒需要执行 3,000 个查询...什么样的服务器可以处理它?
问题是:实际上我的网站每天的访问量是 2,000 次,每秒有 -+ 150/200 次查询......从这一点开始,我预计每秒会有 50,000 次查询。
我需要多少个集群或复制服务器来管理这项工作?
答案1
我曾经在一家电子商务公司工作,该公司的网站每天有数百万的页面点击量。我们有一台 DELL PE 1750,配备 2 个单核 CPU 和 2GB RAM,数据库大小约为 4GB。在高峰时段,这台服务器每秒可处理多达 50k+ 个查询。
话虽如此,数据库结构良好,所有查询都经过了微调(我们每周都会分析慢查询日志并修复查询和索引),服务器设置也经过了微调。缓存肯定是个好主意,但 MySQL 无论如何都会这样做,您只需分析性能,然后微调内存的使用方式(查询缓存与其他选项)。
根据那次经验,我可以告诉你,最大的影响是由缺少索引、错误索引和不良的数据库设计(例如长字符串字段作为主键和类似的废话)造成的。
答案2
这完全取决于查询的复杂程度、服务器的内存大小以及磁盘的速度。
如果查询非常简单,或者调整得很好,那么单个大型数据库服务器就可以处理。但是,如果查询非常复杂(或简单但调整不佳),那么您将需要多台服务器。
答案3
如果您对所运行的特定查询、数据库方案及其大小一无所知,那么这实际上无法估计。
对索引列进行简单的 SELECT 操作如下相当与基于非索引的几个 JOIN 不同的是...当然,如果所涉及的表包含 1K 或 1M 条记录,情况就会发生很大变化。
还:
- 您当前的硬件配置是什么?
- 您的服务器在当前负载下使用了多少电量(CPU、RAM、磁盘 I/O)?
答案4
有太多因素会影响您的每秒查询数,请不要在没有亲自测试的情况下相信我的数据。我在这里发布我的速度测试结果,以帮助某人估算当前(2018-09)mysql 数据库和机器的 qps。在我的测试中数据大小小于服务器内存(这大大减少了 IO 并提高了性能)。
我使用一个 CPU 3.75GB 内存、100GB ssd、gcp 云 mysql 服务器实例并获得:
- 1 个客户端,一条 SQL 一行读取:799 SQL/秒。
- 50 个客户端,一条 SQL 一行读取:6403 sql/秒。
- 50 个客户端,一条 SQL 写入一行:写入 4341 行,qps。4341 sql/秒。
- 1 个客户端,每个 SQL 写入 30k 行:每秒写入 92109 行。