My customer runs Sap B1 version 8.8.2 PL 11 and is faced with occasional hangs of the SAP B1 client application. When browsing from an existing order to a linked outgoing invoice the B1 client hangs (beackball cursor, unresponsive). The customer reported other actions that also results in a hang but since this hang occurs regularly and can be easily replicated we focus on this one. The customer reports that if he waits a couple of seconds before he does anything the likelihood of a hang is much lower. This seems consistent with the fact that the hang is not 100% sure.
The SAP partner checked the setup (HP DL380 Gen 8 server with W2012 Hyper-V and a dedicated Win 2008 R2 server with SQL for SAP B1) and found no (obvious) problems. To diagnose further we ran a copy of our database in their hosted environment and we could not replicate the hangs. Hence why we focused on the customer network as the culprit.
We disabled TCP offloading on the server and captured network traffic with Wireshark when the B1 clients hangs. We noticed the sequence is always the same and goes like this:
- Server and client are transferring data back and forth over a random high port number (client) and port 1433 (server).
- At some point the B1 client no longer responds to the server. The client PC sends an ACK message to the server but there is no data. The B1 client has crashed.
- The client PC opens a new socket with a new high port number (usually +1) and starts exchanging KeepAlive messages with the server.
We compared this with the sequence when things *do* work as they should. It then looks like this:
- Server and client are transferring data back and forth over a random high port number (client) and port 1433 (server).
- At some point the B1 client stops responding and the client PC sends an ACK message to the server. The client did not crash however.
- After approx. 4 to 6 seconds of silence the B1 client resumes traffic.
In some cases the client PC also opens a new socket while waiting but resumes traffic in the previous socket.
We noticed the data in the last packet from the server is always the same, regardless if the B1 client crashes or not. The data is:
5: ( *FormID( *ItemID( *ColID &ActionT &QueryId8IndexID *Refresh ( *FieldID * FrceRfrsh *ByFieldy
The reply (if it comes) seems to be different each time. Most of the times it looks like this:
*SELECT COUNT('A') FROM [dbo].[DAR1] T0 WHERE T0.[DocType] = (@P1) AND T0.[KeySeg1] = (@P2) *B@P1 nvarchar(21),@P2 nvarchar(16)* *15 *24
The last 2 numbers in that query are different every time.
Attached you'll find truncated version of the WireShark .pcapng files. They are renamed to .txt to allow them to be uploaded to this forum. In these files the server has IP 192.168.1.4 and the client has IP 192.168.1.122. I can make the full files available to anyone who is interested to take a closer look.
Thank you in advance for you suggestions and advice.
Best regards,
Sander