压测有关问题总结
压测经历的痛苦无以言表,但是所获与成长是显著的。记录点点滴滴,都是汗与泪的总结。
--------- 动账通知 ----------
1.kafka 参数调整:
·socket.receive.buffer.bytes 6024100 -> 1024100 注:kafka和消费者必须保持一致。
·kafka建议增添监控措施。
·停止操作一定要规范,不然会出现僵尸进程,需要重启很麻烦。
2.动账通知消费者:
·max.partition.fetch.bytes -> 2097152。
·配置文件kafka.poolTimeout 由5000改成500。
·messageId进行统一化。
·参数尽量使用对象传递,维护方便。
3.动账通知的代理IHS需要注意配置。
--------- 红包 ----------
1.拆红包的过程是Ajax请求,openId必须从session中获取。
2.将数据库的序列索引的高速缓存由 20改为1000(中行基本都是1000)。
3.在日期索引列添加反向索引,或者将日期详细化,以达到良好的哈希分布。
4.静态资源前置或者压缩问题,流量等于文件大小*8.
--------- 指令 ----------
1.scala的隐式转换,在高并发时会出现问题。类加载器不充足问题。
2.代码最好有良好的格局,牛逼的代码,让人易懂才是首要前提。
--------- 页面 ----------
1.减少数据库操作,尤其是可以以更优雅的方式解决的情况。
2.能再数据库中处理的逻辑,最好不要放在代码中。
3.减少接口的访问频率,以最大化利用接口访问信息。注:网络传输的代价更高!!!!
--------- 挡板 ----------
1.配置文件初始化到内存,最大限度减少IO操作。
2.成员变量必须定义成final,在高并发是成员变量的误操作会产生大BUG。
3.开发代码一定要有管理工具,及时提交代码并填写注文。
4.开发必须实现定好规范,前期的繁琐会给后续问题解锁。
--------- 其他 ----------
1.控制台日志必须关掉,有时会产生死锁问题,影响TPS 从250降到30。
2.环境务必保持一致,以便减少对环境问题的猜疑。
3.停止程序尽量不要强停,以更优雅的方式停止会更好,尽量使用钩子程序。
4.IHS中添加静态资源的缓存配置。
5.开发前一定明确业务需求,项目要灵活易扩展。
最后,问题还需要正面应对,逃避是糟糕的想法。