在测试设置中(单客户端服务器-运行Gatling的本地主机,在测试期间创建和关闭连接),我的单节点Zookeeper会保持所有TCP连接打开,直到测试运行完成。
在最初2分钟的测试运行中,我重复地并行创建多达10个客户端连接,这些连接存活了大约30秒,然后再次关闭它们的连接。所以在前2分钟的任何时候都有多达10个连接处于活动状态。然后测试继续8分钟,在此期间只有一个客户端连接处于活动状态。
客户端:使用策展人2.9.1和Zookeeper 3.4.6
动物园管理员节点:3.4.8-1--1
如果客户端正确关闭连接(证据:我看到在执行ls/path/to/ephemerals时,它的临时节点被删除,zookeeper日志也指示关闭的连接)
然而,当向zookeeper节点发送cons命令时,TCP连接的数量在前2分钟内不断增加,总计达到126个。然后它会一直保持这个数字,直到测试运行完成,此时所有连接都会立即消失。
我预计连接的数量会低很多,比如10到20个,并且在测试的“活动”阶段保持稳定。相反,只要我打开/关闭新的连接,它就会不断上升。
在最初的2分钟内,zookeeper日志显示打开和关闭连接:
2016-03-25 15:54:04,305 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:NIOServerCnxnFactory@192] - Accepted socket connection from /0:0:0:0:0:0:0:1:60758
2016-03-25 15:54:04,321 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:ZooKeeperServer@900] - Client attempting to establish new session at /0:0:0:0:0:0:0:1:60758
2016-03-25 15:54:04,324 - INFO [SyncThread:0:ZooKeeperServer@645] - Established session 0x153ae440b2e000f with negotiated timeout 10000 for client /0:0:0:0:0:0:0:1:60758
2016-03-25 15:54:04,324 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:ZooKeeperServer@924] - got auth packet /0:0:0:0:0:0:0:1:60758
2016-03-25 15:54:04,325 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:ZooKeeperServer@958] - auth success /0:0:0:0:0:0:0:1:60758
2016-03-25 15:54:04,326 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:ZooKeeperServer@924] - got auth packet /0:0:0:0:0:0:0:1:60758
2016-03-25 15:54:04,328 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:ZooKeeperServer@958] - auth success /0:0:0:0:0:0:0:1:60758
2016-03-25 15:54:04,803 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:NIOServerCnxnFactory@192] - Accepted socket connection from /127.0.0.1:37236
2016-03-25 15:54:04,804 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:ZooKeeperServer@900] - Client attempting to establish new session at /127.0.0.1:37236
2016-03-25 15:54:04,805 - INFO [SyncThread:0:ZooKeeperServer@645] - Established session 0x153ae440b2e0010 with negotiated timeout 10000 for client /127.0.0.1:37236
2016-03-25 15:54:04,828 - INFO [ProcessThread(sid:0 cport:12182)::PrepRequestProcessor@489] - Processed session termination for sessionid: 0x153ae440b2e0010
2016-03-25 15:54:04,830 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:12182:NIOServerCnxn@1008] - Closed socket connection for client /127.0.0.1:37236 which had sessionid 0x153ae440b2e0010
然后,只有在运行结束时,对于我看到的每个连接
2016-03-25 15:57:44,002 - INFO [SessionTracker:ZooKeeperServer@355] - Expiring session 0x153ae440b2e006c, timeout of 10000ms exceeded
2016-03-25 15:57:44,003 - INFO [SessionTracker:ZooKeeperServer@355] - Expiring session 0x153ae440b2e00b8, timeout of 10000ms exceeded
2016-03-25 15:57:44,003 - INFO [SessionTracker:ZooKeeperServer@355] - Expiring session 0x153ae440b2e0094, timeout of 10000ms exceeded
...
2016-03-25 15:57:44,014 - INFO [ProcessThread(sid:0 cport:12182)::PrepRequestProcessor@489] - Processed session termination for sessionid: 0x153ae440b2e006c
2016-03-25 15:57:44,014 - INFO [ProcessThread(sid:0 cport:12182)::PrepRequestProcessor@489] - Processed session termination for sessionid: 0x153ae440b2e00b8
2016-03-25 15:57:44,015 - INFO [ProcessThread(sid:0 cport:12182)::PrepRequestProcessor@489] - Processed session termination for sessionid: 0x153ae440b2e0094
...
(请注意,上面的日志是从手动中断的运行中获取的,但如果我让运行完成到16:02,其行为是相同的)
我运行以下配置(摘录):
tickTime=2000
maxSessionTimeout=10000
minSessionTimeout=4000
maxClientCnxns=0
连接数量的增加是与测试设置有关,还是与Zookeeper的操作方式有关?
事实证明这是我们客户代码中的一个错误。连接没有正确关闭,只完成了一半的清理(临时节点被删除了,但客户端连接实际上并没有真正关闭)。
抱歉占用了你的时间。
查看云服务器的后台会显示 cpu, 内存, 带宽, 系统盘读写等信息,如果一个应用的日活不断上升,由于资源的限制可能会导致部分用户的使用体验下降,那么如何在用户问题出现前通过查看这些指标来提前知道服务器已经到达瓶颈,需要升级服务器?
我试图连接到存在于Weblogic服务器中的JMS队列。我的客户端应用程序部署在Webphere应用程序服务器上。为了创建一个连接到Weblogic JMS的JMS提供程序,我必须使用哪些jars?需要您的帮助,请...
问题内容: 我使用JDBC连接到MySQL。在时,一切正常。 但是,当我将应用程序移动到Intranet中的另一台计算机上并用于连接到MySQL数据库时,大约需要1分钟才能成功连接到MySQL。这是怎么回事? 问题答案: 好吧,这可能是DNS问题。您可以通过从配置文件中的选项开始禁用DNS主机名查找。 在这里阅读更多详细信息:http : //dev.mysql.com/doc/refman/5.
我发现了这个描述如何摧毁一名服务人员的回购协议。但我没有找到任何资源来描述工作人员何时应该销毁/卸载/注销自己。 当我开发网站时,我经常使用8080端口。我可以在有服务人员的站点X上工作,然后在没有服务人员的站点Y上工作,但是原来的和现在不正确的服务人员仍然存在。 服务人员决定卸载自身的逻辑有点复杂,因为我们希望: 允许服务工作人员脱机工作 是否有一个标准的机制或惯例?
本文向大家介绍什么时候使用状态管理器?相关面试题,主要包含被问及什么时候使用状态管理器?时的应答技巧和注意事项,需要的朋友参考一下 摘抄阮老师的 从项目的整体看 用户的使用方式复杂 2.不同身份的用户有不同的使用方式(比如普通用户和管理员) 3.多个用户之间可以协作 4.与服务器大量交互,或者使用了WebSocket 5.View要从多个来源获取数据 从组件角度看 1.某个组件的状态,需要共享 2
我刚刚开始使用rabbitmq,我目前正在rabbitmq网站上的教程中工作。我使用本地机器作为服务器完成了hello world教程。现在我想连接到另一台机器上的远程服务器。我的问题是我需要使用什么主机名来连接到这个服务器。它是安装rabbitmq服务器的机器的ip地址吗。