瓜农老梁

一个想分享点干货的家伙,微信公众号「瓜农老梁」

0%

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
一、系统优化

1.最大文件数

2.系统参数调整

二、RocketMQ性能调优

1.开启异步刷盘

2.开启堆外内存设置

3.开启文件预热

4.开启Slave读权限

5.关闭堆内存据传输

系统优化

最大文件数

limits.conf 设置用户能打开的最大文件数

1
2
3
4
5
6
7
8
9
10
11
vim /etc/security/limits.conf

\# End of file

baseuser soft nofile 655360

baseuser hard nofile 655360

\* soft nofile 655360

\* hard nofile 655360
阅读全文 »

前言

在前面的文章第三篇《Netty组件之Channel注册》分析了channel是如何注册到Selector上的。第五篇《Netty之客户端连接调用》,分析了建立连接的过程。本文将梳理如下内容:

1.就绪事件如何轮询的?bossGroup和workGroup都轮询什么感兴趣的事件

2.bossGroup的职责是什么?又是如何将客户端新建连接Channel传递到workGroup的?

3.workGroup的职责是什么?如何回调到我们自己加入的childHandler中的?

阅读全文 »

现状描述

集群其中一台物理机未知原因导致单用户无法登陆机器,该物理机需要重启修改密码或者重装系统。该台为master节点,运行正常。

配置策略为:异步刷盘 & 主从异步复制

如果直接下线该master,由于主从异步复制,可能导致部分消息来不及复制到slave造成消息丢失。所以该方案不可行。

另一种方案选择:关闭该broker的写入权限,待该broker不再有写入和消费时,再下线该节点。

关闭broker写权限

2表示只写权限,4表示只读权限,6表示读写权限

1
2
3
4
5
6
7
bin/mqadmin updateBrokerConfig -b 192.168.x.x:10911 -n 192.168.x.x:9876 -k brokerPermission -v 4

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0

update broker config success, 192.168.x.x:10911
阅读全文 »

说明

RocketMQ中当重试消息超过最大重试次数(默认16次),会被发送到%DLQ%开头的死信队列,默认死信队列为只写权限。在有些情况下,想看看死信队列里的内容。

更改死信队列权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bin/mqadmin updateTopicPerm -c ClusterB -t %DLQ%online-tst -p 6 -n 192.168.1.x:9876

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0

update topic perm from 2 to 6 in 192.168.1.x:10911 success.

update topic perm from 2 to 6 in 192.168.1.x:10911 success.

update topic perm from 2 to 6 in 192.168.1.x:10911 success.

update topic perm from 2 to 6 in 192.168.1.x:10911 success.

注:将死信队列只写权限更改为读写权限
阅读全文 »

前言

本文主要梳理Netty客户端如何发起连接请求的以及最终通过SocketChannel与服务端建立连接,顺便分析了在此过程中涉及到的地址解析过程。

阅读全文 »

克隆消费组的offset(同一个集群)

1
2
3
4
5
6
7
bin/mqadmin cloneGroupOffset -n 192.168.1.x:9876 -s SCANRECORD_GROUP -d my-tst-cloneoffset -t SCANRECORD

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0

clone group offset success. srcGroup[SCANRECORD_GROUP], destGroup=[my-tst-cloneoffset], topic[SCANRECORD][baseuser@HZPL001180 rocketmq]$
阅读全文 »

分配MQ

1
2
3
bin/mqadmin allocateMQ -n localhost:9876 -t tst-topic -i ipList

ipList 以逗号分隔

删除topic

1
bin/mqadmin deleteTopic -n localhost:9876 -t zto-example -c DefultCluster
阅读全文 »

发送测试消息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
bin/mqadmin checkMsgSendRT -n 192.168.x.x:9876 -t topic_online_test -s 1024

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0Broker Name QID #Send Result RTbroker-a 0 true 314broker-a 1 true 0broker-a 2 true 0

broker-a 3 true 0

broker-b 0 true 2

broker-b 1 true 1

broker-b 2 true 1

broker-b 3 true 0

broker-a 0 true 1

broker-a 1 true 0

broker-a 2 true 0

broker-a 3 true 1

broker-b 0 true 4

-t topic topic name

-a amount message amout | default 100

-s size message size | default 128 Byte
阅读全文 »

获取namesrv配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[baseuser@HZPL00xxxx rocketmq]$ sh bin/mqadmin getNamesrvConfig -n 192.168.1.x:9876

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0

============192.168.1.x:9876============

serverChannelMaxIdleTimeSeconds = 120

listenPort = 9876

serverCallbackExecutorThreads = 0

serverAsyncSemaphoreValue = 64

serverSocketSndBufSize = 4096

rocketmqHome = /home/baseuser/rocketmq

clusterTest = false

serverSelectorThreads = 3

useEpollNativeSelector = false

orderMessageEnable = false

serverPooledByteBufAllocatorEnable = true

kvConfigPath = /home/baseuser/namesrv/kvConfig.json

serverWorkerThreads = 8

serverSocketRcvBufSize = 4096

productEnvName = center

serverOnewaySemaphoreValue = 256

configStorePath = /home/baseuser/namesrv/namesrv.properties
阅读全文 »

前言

前面的文章分析了Channel实例化、初始化、注册机制,本文分析下异步结果的通知,也就是回调,同时梳理下Future、Promise、ChannelFuture、ChannelPromise的关系。

阅读全文 »