RocketMq 调忧
1,JVM 设置最大,最小 内存空间
2,消息线程池最大,最小数量
3,一次性消费多少
4,每隔多长时间拉取一次消息
5,已消费的消息,占磁盘70%(自定义)就清理(在配置文件中设置)
Redis 调忧
Redis 直接操作写一万遍数据需要 7分钟 连接redis 连接了一万次(连接redis 过程中非常耗时)
Redis 获取一个管道,再去写一万遍数据 7秒钟, + 分段(100次管道)提交 。(只需连接一次)
redis.conf
基于RDB持久化 Redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000
分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。(更改这几个参数值进行调忧)
基于AOF重写
# 当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写
#
# 它是这样工作的:Redis会记住上次进行些日志后文件的大小(如果从开机以来还没进行过重写,那日子大小在开机的时候确定)
#
# 基础大小会同现在的大小进行比较。如果现在的大小比基础大小大制定的百分比,重写功能将启动
# 同时需要指定一个最小大小用于AOF重写,这个用于阻止即使文件很小但是增长幅度很大也去重写AOF文件的情况
# 设置 percentage 为0就关闭这个特性
auto-aof-rewrite-percentage 100 (调忧可以调整参数的数值)
auto-aof-rewrite-min-size 64mb
内存泄漏
1,注意事件监听器和回调,如果一个监听器已经注册,但是当这个类不再被使用时却未被注销,就会发生内存泄漏。
2,很多时候当一个对象的成员变量指向其他对象时,不再使用时需要被置为null
3,一些带close()的连接是否关闭,比如数据库连接(dataSourse.getConnection()),网络连接(socket)和io连接,除非其显式的调用了其close()方法将其连接关闭,否则是不会自动被GC 回收的。
4一些不用的变量应该销毁掉
进程挂掉
1,进程监护机制,进程挂掉立即拉起
2,整个服务器挂掉,服务器可以实现双机热备,主宕机从节点当主节点。 在通过日志分析主为什么宕机。
数据库读写慢
1,字段很多的表分解成多个表,不常用的字段放在一张表中
2,使用索引可快速访问数据库表中的特定信息(index)
3,防止数据库崩溃数据全部丢失,数据备份与还原
性能负载趋势
稳定的单用户的模式下长期运行脚本,每次访问的响应时间稳定无泄漏是一根平滑的直线,响应时间没有递增和资源的递减,资源控制的比较合理
TPS 突然下降(看日志是不是有人在用,cpu 被占)
吞吐量:(网络图中的吞吐量与运行中的虚拟用户吐乘相反的规律,这说明用户在增加的时候吐吞量反而下降)查看软件代码,找到问题的原因。