求问每隔五秒有 4k 用户轮询该用什么配置的服务器

求问每隔五秒有 4k 用户轮询该用什么配置的服务器,第1张

求问每隔五秒有 4k 用户轮询该用什么配置的服务器,第2张

每个用户请求就会 UPDATE 一下 mysql 数据库。。 如果只有一台服务器,求问各位 V 友至少要什么配置

----------------------- 以下是精选回复-----------------------

答:4000 请求是同时产生还是会有错开一两秒? update 的 sql 复杂不?单次执行时间是多少? mysql 是也在本地吗?
答:刷单么?
答:这个量级基本上大多数服务器都很轻松能扛下来嘛, Linux 修改一下 open file 的 limit 就好了
答:intel 3700 ssd 一块搞定,为了安全最好 raid1
答:最好优化下架构,把这个 update 缓进内存。
答:1 、如果更新的是同一行记录的话,或者就那么几行的话,可以用 Redis 缓存一下更新请求,然后汇总之后放到 SQL 上面。
2 、如果更新记录不固定的话,可以在给更新请求加个队列,把 4K 的请求分散到 5 秒,不就是 800QPS 了。
答:擦车做的好,低配机器轻松扛下来。做得不好,主要看 io 的。
答:如果均匀分布的,那么 IOPS 是 800 s^-1, 如果要持久化到磁盘就必须要用 SSD.
如果可以放弃持久性要求,可以用 redis 或者把 innodb_flush_log_at_trx_commit 设置成 0.
答:1 , SELECT * FROM userstatus 改掉,只取要用到的字段,还有,如果 phone 字段不是主键或者没有唯一索引的话, SQL 语句后面加上 LIMIT 1 (除非你的业务逻辑存在取多条记录的可能)
2 , UPDATE 语句打印 explain 出来看看(需要 MySQL 5.6 以上),可能的话把 UPDATE 语句完整的贴出来

BTW ,可以 isset($_GET['phone'], $_GET['sim'], $_GET['group']) && is_numeric($_GET['phone']) && is_numeric($_GET['sim']) && ....
答:一般来说,试一下,扛得住就行,看不住再升级。:)
答:看了楼主发的代码截图,其实就是在数据库中持久化以 phone 为 key , owner 和 sim 为 value 的一个 map ,而这个 map 的大小为 4k 。所以最简单的办法就是在内存中保持这个 map ,新来的请求就只是更新这个 map 。而这个 map 多长时间刷新到数据库就看你的数据库的压力承受能力。

如果要读取用户的状态,只要先在内存 map 中查,能查到这就是最新状态,查不到再在数据库中读取。

这样下来,数据库的 IO 压力是可调整的。而能不能抗得住 5 秒内 4k 的 http 请求主要看服务器的 CPU 了。
答:17 楼是源码么...
单用 is_numeric 过滤,可以被 16 进制绕过,某些情况下可以注入的...
答:30 说的有道理,不过不想这么复杂的话,还是建议用 RDS 测试一下,先买个按量的实例,扛不住了就换个高规格的,没问题之后再买个包年包月的
当然了,省事就是费钱,量上来之后不行买高规格就搭配 redis 做缓存,没必要这么纠结

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 求问每隔五秒有 4k 用户轮询该用什么配置的服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情