一个日均PV在千万以上的移动客户端,大概有20w-50w的注册用户数。为了简单起见,将一次PV来代表一次Http请求。在移动客户端下,这些是纯逻辑的,不包含静态页面的访问和图片的访问。 并发量 并发量的计算公式是pv/时间。无论是再复杂的请求平均响应时间在1秒以内,如果超过的1秒,那么就说明需要调优或者重新设计当前的业务系统。一天一共是86400秒,那么每秒支持的并发数为100左右,也就是每秒大概100个并发。 服务器配置服务器是两台32G内存的8核处理器。其中一台服务安装上Niginx来做分发,另一外一台服务安装上Redis来缓存。每台服务器都安装了Tomcat8。 RedisRedis由于是走内存,所以基本上都是毫秒级响应。使用Redis,基本上80%的请求可以在缓存中直接获取。剩下的20%Mysql完全可以支撑住。可以缓存热点数据,甚至是直接缓存结果。但是缓存结果的时候要注意,只缓存正确的结果。曾经我犯过这样的错误,将错误的结果缓存起来了,结果明明BUG已经修复,还是显示错误的页面,排查了问题好久,结果就是Redis将错误的结果也缓存了。没必要对Redis做伪集群处理,单机的Redis其实在千万级的PV下都是小case。 日志日均PV千万的系统,Tomcat的 access_log每天产生大概2g多的日志。tomcat追加2g多的日志是很快的,基本上都是毫秒级响应,要注意监控,因为每天2G多的日志一个月下来就可能将服务器的资源占满。所以要定时清理,可以写一个shell脚本定时清理前一个月的日志。 Mysql一定要注意加索引和慢查询(无论是阿里云还是腾讯云都提供慢查询的工具。可以清楚的看到是哪些sql导致了慢查询)。1千多万条记录,1G多。索引大概7八百兆。update:2秒多左右。insert1秒多,目前还没有分表,Mysql单表三千万的记录示处理起来没有丝毫障碍。 不要使用事务 在高并发的情况下不要使用事务。避免出现锁等待。Spring的事务注解
故障排查到了日均PV千万,故障排除是重点。一旦线上出问题,影响面是相当广的。由于日志分布在多个机器上,如果线上出现问题,挨个机器排查日志是一件很痛苦的事情。所以,构建好的监控系统是重点,推荐使用ELK构建一个快速的错误日志查询系统。 文章来源: https://juejin.im/post/58a158261b69e60059d3f524 面对日均PV千万的系统故障排查,监控宝为用户提供了高效的服务组件监控,可及时掌握组件工作状态,发现组件异常及时告警,有效的保障用户体验。包括监控Apache、Tomcat、Lighttpd、Nginx、IIS、Docker等主流服务组件;以及可监控MySQL、Oracle、SQLServer、MongoDB、Redis、Memcache等主流关系型及非关系型数据库。 ↓↓↓ 点击"阅读原文" 【快速体验监控宝】 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|