根据日志和代码结合分析可知,当启动多个节点的时候,效率低下,分析原因:
jenkins启动节点时候,jenkins发现需要启动节点,则通知k8s plugin启动一个pod,jenkins 使用NIO与节点通信,当pod启动以后,会向主节点发送socket连接请求,表示节点已经与主节点建立连接。
猜测是多个NIO通信导致阻塞,但是通过对NIO的单独测试,一个机器开启socket服务端,同时使用100个线程模拟客户端发起连接,每一客户端连接,服务端都启动一个线程处理该客户端,1s内就可以完成连接。证明,NIO连接时非常快的,而且并不耗费大量系统资源,因为没有大量数据通信,所以,可能瓶颈并不在这个地方。
由于目前的模拟并发构建的是采用,顺序发请求,每个请求到达jenkins服务器有时间差,导致启动节点等也有时间差,不好比对启动pod到socket连接成功的时间,所以,先采用多线程同时发送请求的方式构建,查看日志,取出每个创建pod以及socket连接成功的时间差,分析是否这个时间差距随着并发量增减变化。