WSA + Appserver administration

Hi,

I have a question about adminstartion pair WSA + appserver for web based application.
I looked into WSA.log and noticed many errors, that looks like:

[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- READPACKET IOException : java.io.EOFException (null)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- java.io.EOFException
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.ubroker.client.TcpClientMsgInputStream.readstream(TcpClientMsgInputStream.java:502)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.ubroker.client.TcpClientMsgInputStream.readubhdr(TcpClientMsgInputStream.java:291)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.ubroker.client.TcpClientMsgInputStream.readMsg(TcpClientMsgInputStream.java:191)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.ubroker.client.BrokerSystem.readMsg(BrokerSystem.java:2684)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.ubroker.client.BrokerSystem.readPacket(BrokerSystem.java:2492)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.ubroker.client.BrokerSystem.read(BrokerSystem.java:1177)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.ubroker.client.BrokerSystem.read(BrokerSystem.java:1120)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.open4gl.dynamicapi.SinkInputStream.read(SinkInputStream.java:53)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.open4gl.dynamicapi.OutputParamReader.<init>(OutputParamReader.java:36)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.open4gl.dynamicapi.Session.runProcedure0(Session.java:1045)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.open4gl.dynamicapi.Session.runProcedure(Session.java:737)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.open4gl.dynamicapi.Session.runProcedure(Session.java:589)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.wsa.open4gl.proxy.WSAProxyObject.runProcedure(WSAProxyObject.java:347)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at java.lang.reflect.Method.invoke(Unknown Source)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.wsa.open4gl.Rpc4glProvider.invokeJavaMethod(Rpc4glProvider.java:1831)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.wsa.open4gl.Rpc4glProvider.invokeSOAPMethod(Rpc4glProvider.java:852)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.wsa.open4gl.Rpc4glProvider.invoke(Rpc4glProvider.java:577)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.wsa.ApacheSOAPEngine$ApacheSOAPRequest.execute(ApacheSOAPEngine.java:2772)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at com.progress.wsa.WsaServlet.doPost(WsaServlet.java:604)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
[10/07/24@16:21:04.362+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- at java.lang.Thread.run(Unknown Source)
[10/07/24@16:21:04.364+0300] P-000000 T-http-8443-5 1 Oblik_Main ---------------- DISCONNECT IOException: java.net.SocketException: Broken pipe

After analizing a problem I noticed the following : the problem is no threads available at Appserver at the moment web service call occurs.
For user it looks like this: User clicked some button, web interface returns "WSA Error", User repeats this action in 5 seconds and everything seems ok already. As I understand, It takes about 2-3 seconds for Appserver to create new instance of thread at Appserver level.
I noticed that WSA returns ERROR immediatly. It doesnt wait for appserver starting new thread. Is there any way to fix it?

If I dont set minSrvrInstance parameter at appserver level and there is no activity, number of theards downs to 1. Web client is making async requests can use up to 3-5 threads in parallel.

Any advice?
 

RealHeavyDude

Well-Known Member
The only thing that comes to my mind is that there are several parameters for the AppServer which define the behavior when no free AppServer agent is found:

The following parameters define the number of agents the AppServer should start initially ( at startup of the AppServer broker ), how many agents the broker is able to start and how many agents should always run ( others will be trimmed automatically when the idle timeout is reached ):

initialSrvrInstance=1
maxSrvrInstance=10
minSrvrInstance=1

The different timeouts can be configured with the following parameters ( these are the default values out-of-the-box ):

autoTrimTimeout=1800
requestTimeout=15
srvrStartupTimeout=3


I once did a consulting at a company where the srvrStartupTimeout was 0 ( zero, nada, nothing ) ...


HTH, RealHeavyDude.
 
RHD, thanks for help.

My first suggestions were kinda wrong.

I had a problem starting more that 6 threads for server, so a changed srvrMaxPort, srvrMinPort parameters.
Setup appserver parameters to:
initialSrvrInstance=10
maxSrvrInstance=100
minSrvrInstance=10
srvrStartupTimeout=0
but error still occurs in wsa log.... no errors were in appserver/broker logs

Problem was described in ID: P110855 solution in KB.
I have to restart wsa after restarting appserver. It applies to state-free model only.
So i just wrote a script like

#sh
wsaman -name $1 -appname Oblik_Document -disable
wsaman -name $1 -appname Oblik_Document -enable
wsaman -name $1 -appname Oblik_DocEditor -disable
wsaman -name $1 -appname Oblik_DocEditor -enable
wsaman -name $1 -appname Oblik_Main -disable
wsaman -name $1 -appname Oblik_Main -enable
wsaman -name $1 -appname Oblik_DBView -disable
wsaman -name $1 -appname Oblik_DBView -enable
wsaman -name webdb -appname webdb -disable
wsaman -name webdb -appname webdb -enable

Maxim
 
Top