我是新手,我不知道怎么做,所以我的高级研究员请帮助!!!!
有下面描述的情况:
HTTP客户端正在发送直接命中Loadbalancer的请求(请求可以是任何类型,不关心请求类型)。然后,Loadbalancer根据流量负载将流量重定向到在两个V440 Server中运行的“Gateway”系统,GW逻辑用Java编写,实际上逻辑上将此请求路由到实际处理请求的另外两个服务器节点
现在的情况是这样的:从多个HTTP客户端与此网关建立了几个并行连接。每个客户端一个连接。据观察,在连接到此GW时,如果某些客户端的CPU利用率为98-99%。
客户端正在特定端口上与GW建立一个连接。打开套接字连接:
ServerSocket _ss = new ServerSocket(_port);
Socket s = _ss.accept();
然后GW等待来自客户端的输入。
现在我的问题是:
为什么会出现这种情况,因为它看起来很好 对于其余的客户和那里的联系。 只有少数与GW建立联系的客户正在制造这种情况?
无论如何,我们可以跟踪此客户的IP,以便我们能够理解这一点 每次都是由同一个客户发生的?
有没有解决方案?
答案 0 :(得分:0)
由于所有客户都没有这样做,我们当然不会立即找到答案。然而,这是我对该问题产生的有限研究
首先,问题2
配置F5以捕获客户端的IP。由于它是HTTP,因此有多种方法可以跟踪请求。一个是
嗅探标题
Private Function OptionBoxGroupHasASelection(inputControl As MSForms.Control) As Boolean Dim ctrl As MSForms.Control Dim sGroup As String Dim bOutput As Boolean If TypeName(inputControl) <> "OptionButton" Then OptionBoxGroupHasASelection = False Exit Function End If If inputControl.Value = True Then OptionBoxGroupHasASelection = True Exit Function End If sGroup = inputControl.GroupName bOutput = False For Each ctrl In Me.Controls If TypeName(ctrl) = "OptionButton" Then If ctrl.GroupName = sGroup Then If ctrl.Value = True Then bOutput = True Exit For End If End If End If Next ctrl OptionBoxGroupHasASelection = bOutput End Function
,它将提供客户端的IP 地址
或尝试在日志记录引擎中添加此规则
X-FORWARDED-FOR
如果您还需要其他数据,例如资源,您可以使用其中一个 其他事件,如HTTP_REQUEST:
when CLIENT_ACCEPTED { log local0. "clientIP:[IP::client_addr] accessed" }
请参阅上面的here
链接其次,问题1
为此,您需要查看可用的流量统计机制。我看了this,this和this。启用统计信息,实时监控它们,测试,模拟请求并分析输出。我现在还不知道除此之外的任何其他选择。
如果可以修改Java程序,另一个选择是为每个请求包含某种性能日志记录机制。但这意味着有很多发展,我根本不推荐。
第三,问题3
这主要是基于意见的。据我所知,如果你弄清楚问题,你可以解决它。