最近开发了一个只有3个页面的微信投票小项目
基本流程:一个微信号一天只能对一个参与者投一次票且一天总共可以对不同参与者投10次票
首页内容:展示所有投票参与者以及其得票数,按照编号排序(支持点击投票)
排行页内容:展示所有投票参与者以及其得票数,按照得票数排序
详情页内容:展示指定参与者以及其得票数(支持点击投票)
后台略过…
项目上线后服务器cpu长时间负载100%,仔细查看后发现几个主要问题:

  1. 首页和详情页js中没有对触发异步请求的请求中状态(已发出请求且未收到响应[搜索,下一页加载,投票操作])没有禁用处理和提示,可能导致用户连续点击操作,挂起多个请求
    解决方法:添加对应请求中的状态,在发出请求后,收到响应前都无法再次发出相同请求
  2. 之前有对三个页面的访问量进行统计,但用的是简单粗暴每次访问都直接更新数据库的响应字段值,导致并发增加时数据库写入次数过多 解决方法:配置一个值,每次请求时先将总访问量+1,再判断如果等于配置值,则更新数据库的总访问量并清空缓存,反之写入缓存
  3. 忘了关闭TP框架的调试模式(调试模式会使模板缓存和字段缓存失效)
    解决方法:关闭调试模式
  4. mysql数据表的联合索引没有生效(原因待定)