问题

今天修理hbase问题的时候发现,监控的60010端口的master.jsp就是无法显示,进入log查看发现zookeeper连上了之后马上就断开。

[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn$Factory@247] ` - Too many connections from /10.10.8.136 - max is 10 `

这种情况在telnet测试中被证实,一连上也是瞬间脱离与服务器的连接。

解决

其实需要在zoo.cfg中加入maxClientCnxns=300,加完以后需要重启。问题解决。

原因

我们线上有24台节点,但是这个参数竟然是使用默认的10,导致更多的客户端连上了zookeeper导致namenode的自带管理页无法连接到zookeeper,进而无法显示该页面。

如何监控zookeeper的其他指标,这里列出zoo.cfg的配置文件

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
dataDir = 数据存放路径

dataLogDir = 日志存放路径

clientPort = 客户端连接端口

clientPortAddress

tickTime= 整型 不能为0

maxClientCnxns= 整型 最大客户端连接数

minSessionTimeout= 整型

maxSessionTimeout= 整型

initLimit = 整型

syncLimit = 整型

electionAlg = 整型

peerType = observer | participant

server. sid= host:port | host:port:port  | host:port:port:type (type值 observer | participant)

group.gid = sid:sid (一个ID, 值是多个sid, 中间以:分割, 一个sid只能属于一个gid)

weight.sid=整型

可以看出还有至少2个参数是需要考虑的minSessionTimeout和maxSessionTimeout需要调优,得用JMX监控一段时间得出结论了。

同样的发现thrift也存在类似一连就断开的问题,下篇博文再作分析。

总结

这个案例告诉我不要盲目认为按照默认参数配置就没问题了,那是给小批量测试用的,需要根据实际情况采取相应配置。

发表评论