笔记:我是一名自学成才的 PHP 开发人员,几乎没有管理 Web 和数据库服务器的经验。
我即将为一个非常庞大的用户群编写一个基于 Web 的考勤系统。我预计大约有 1000 到 1500 名用户同时登录,每天 30 分钟,每周 3 次,每 10 秒左右至少发出 1 次请求。因此,每秒大约有 100 个请求,或者最糟糕的情况是每秒 1000 个请求(平均 16 个并发请求?但考虑到用户发出这些请求的时间很短,这个数字可能会更高。祈祷避免 100 个并发请求)。
我预计有两种类型的交易,一种local
(不是指local
网络)和一种foreign
交易。local
交易基本上是在其所在地下载用户数据并将其缓存 1-2 周。出勤请求可能只是两个数字字符串:userid
和eventid
。foreign
交易用于那些不属于当前所在地的人的出勤。这将传递以下数据:(numeric) locality_id
, 。两个请求都是用 Ajax 完成的,所以不包含 HTML 数据,只包含 JSON。这两种类型的请求都至少需要从服务器得到一个数字响应。我认为和交易(string) full_name
的频率会有 50-50 的分割,但这些交易的大小只有几个字节的差异。local
foreign
目前userid
可能只能达到 6 位数字,并且eventid
也是 4 到 5 位整数。我预计我的users
表至少有 40 万行,event
表有多达 1 万行,表至少有 1500 行,我的主要出勤表每周 3 天每天locality
增加 40 万行(基于表中的用户数量)(每周 120 万行)。users
对我来说,这听起来很大。但这真的那么大吗?或者这可以由单个服务器处理(目前还不确定服务器规格,因为我可能会使用 ServInt 或其他公司的 VPS)?我尝试阅读多服务器设置Heatbeat
、DRBD
主从设置。但我不知道它们是否真的有必要。该users
表每周将增加大约 500 行 1k 行。
如果单台服务器无法处理这个问题,那么如果我要选择 MySQL 复制拓扑,那么对于这种情况,最佳设置是什么?抱歉,如果我的回答含糊不清或问题太宽泛。我只是不知道现在该问什么或你想知道什么。
答案1
我会从一些 Oracle/MySQL 白皮书开始。它们通常会在基准测试方面提供非常深入的细节,从这里开始搜索您可以快速了解 mysql 服务器以及与此类性能相关的硬件的功能[前三个结果是良好的开端]。