每秒处理数百个请求的写入密集型应用程序的系统要求

每秒处理数百个请求的写入密集型应用程序的系统要求

笔记:我是一名自学成才的 PHP 开发人员,几乎没有管理 Web 和数据库服务器的经验。

我即将为一个非常庞大的用户群编写一个基于 Web 的考勤系统。我预计大约有 1000 到 1500 名用户同时登录,每天 30 分钟,每周 3 次,每 10 秒左右至少发出 1 次请求。因此,每秒大约有 100 个请求,或者最糟糕的情况是每秒 1000 个请求(平均 16 个并发请求?但考虑到用户发出这些请求的时间很短,这个数字可能会更高。祈祷避免 100 个并发请求)。

我预计有两种类型的交易,一种local(不是指local网络)和一种foreign交易。local交易基本上是在其所在地下载用户数据并将其缓存 1-2 周。出勤请求可能只是两个数字字符串:userideventidforeign交易用于那些不属于当前所在地的人的出勤。这将传递以下数据:(numeric) locality_id, 。两个请求都是用 Ajax 完成的,所以不包含 HTML 数据,只包含 JSON。这两种类型的请求都至少需要从服务器得到一个数字响应。我认为和交易(string) full_name的频率会有 50-50 的分割,但这些交易的大小只有几个字节的差异。localforeign

目前userid可能只能达到 6 位数字,并且eventid也是 4 到 5 位整数。我预计我的users表至少有 40 万行,event表有多达 1 万行,表至少有 1500 行,我的主要出勤表每周 3 天每天locality增加 40 万行(基于表中的用户数量)(每周 120 万行)。users

对我来说,这听起来很大。但这真的那么大吗?或者这可以由单个服务器处理(目前还不确定服务器规格,因为我可能会使用 ServInt 或其他公司的 VPS)?我尝试阅读多服务器设置HeatbeatDRBD主从设置。但我不知道它们是否真的有必要。该users表每周将增加大约 500 行 1k 行。

如果单台服务器无法处理这个问题,那么如果我要选择 MySQL 复制拓扑,那么对于这种情况,最佳设置是什么?抱歉,如果我的回答含糊不清或问题太宽泛。我只是不知道现在该问什么或你想知道什么。

答案1

我会从一些 Oracle/MySQL 白皮书开始。它们通常会在基准测试方面提供非常深入的细节,从这里开始搜索您可以快速了解 mysql 服务器以及与此类性能相关的硬件的功能[前三个结果是良好的开端]。

答案2

我们有一些关于负载测试和容量规划的典型问题

如何对网站进行负载测试和容量规划?

如何对数据库进行负载测试和容量规划?

您能帮助我进行容量规划吗?

基本上,你必须进行一些监控并运用科学的方法。

相关内容