提醒,对于多个用户同时对一个字段进行修改,必须全局加锁,例如选课,限定30人,如果不加锁,可能30多人选课,具体见选课系统的加锁办法,但是这种是不得已为之,效率低下。除开这种情况,用下面加粗文字方法。
今天60多人同时投票打分,每人提交150条记录,我服务器配置为4核16g内存,我采用一人提交时,其他人被锁定的办法,内存没有增加多少,cpu资源在30%-98%之间跳动,这是为何?我在监控服务器,从现场投票反馈来看,还是很流畅快速,这是怎么回事?
其余人请求被排队阻塞、挂起,不会持续加载数据就不会堆积请求内存。
60个用户同时进来,被锁强制变成单队列串行执行,抢到锁的用户:执行入库、业务校验、计算打分逻辑,CPU 拉高,没抢到锁的59人:不断自旋/等待/轮询锁状态,大量空转+线程切换;
线程频繁就绪/阻塞/运行切换,就会导致CPU 忽高忽低
内存不是问题,没有增加多少,关键是CPU资源像过山车一样,我怕星期一正式使用时,500人同时投票打分,把cpu干死了。
那会不会CPU死掉
肯定会的
怎么办,不加锁,全部放进来?
CPU死掉,会不会释放资源后又可以了
投票打分本身不需要全局互斥,只要控制好同一个人不能重复提交就行
那我租用的服务器配置够用吗?
然后把150条记录改成批量入库试试,一次性组装150条数据,一条SQL批量插入更新
肯定会比现在好一点
要想稳定可靠运行,服务器要多少核心?
8H16或者32G的