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?
 
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
 
Back
Top