cancel
Showing results for 
Search instead for 
Did you mean: 

SAP WEB Dispatcher Load balancing for ADS requests failed randomly

0 Kudos

I have some problems with list of active servers in SAP WEB Dispatcher.

Configured two AS J2EE as back-end systems by parameters wdisp/system_xx for ADS load balancing.

Currently one of them are shutdown but dispatcher is sending HTTP requests for him.

When i check list of active servers - there is only one active J2EE server, that i pointed in URL.

For example: //myserver:msport/msgserver/text/logon?version=1.3

SAP WEB Disp version 7.77.0.

Accepted Solutions (0)

Answers (2)

Answers (2)

0 Kudos
isaias_freitas
Advisor
Advisor
0 Kudos

Hello,

Can you provide the Web Dispatcher profile, so we can verify its configuration?

Or at least the wdisp/system_X and icm/server_port_X parameters that are in use.

Some screenshots showing the systems in the Web Dispather Web Admin UI would be nice too.

Regards,

Isaías

isaias_freitas
Advisor
Advisor
0 Kudos

Hello v-1806 ,

Based on the profile and screenshots that were provided, I would say that new requests will not be sent to PD3.

Requests that were previously mapped to PD3 will fail, but this would be expected and cannot be avoided, since PD3 was stopped.

What happens if you close all browser windows and open a new anonymous / incognito window?

The expectation is that the request goes to PD2.

Regards,

Isaías

0 Kudos

Hello Isaias.

When i turn off the parameter wdisp/system_conflict_resolution = 2, i can not start the WEB Dispatcher, get "Configuration conflict between the system PD2 and PD3" error, during starting the system.

I turned on http logging (screens in attachments), shutdowned the system PD3, done several test of RFC ADS from ABAP (Error in attach.).

From time to time WEB Disp send requests to PD3 (shutdowned), messages in log file ended with "PD3 -".

Started PD3. Check ADS|RFC again (by program FP_PDF_TEST_00). Message ended with "PD3 - J2EE". And all works properly.http-log.pngerroe-message-details.png

isaias_freitas
Advisor
Advisor
0 Kudos

Hello Vinogradov,

It was expected that the Web Dispatcher would not start if you remove the parameter "wdisp/system_conflict_resolution = 2".

Your backend system definitions conflict with each other, so the Web Dispatcher would not know which request should go to which backend system.

About your test with the ABAP system as the client, please logoff from the ABAP system, stop PD3 (for example), wait until the Web Dispatcher recognizes that PD3 is down, then logon to the ABAP system and perform new tests.

This is to avoid possibly existing session cookies (stored at your own ABAP session) from interfering with the test (again, if the Web Dispatcher had already sent a request to PD3, it will keep trying to do so if the same session cookie is received).

Regards,

Isaías

0 Kudos

"Your backend system definitions conflict with each other, so the Web Dispatcher would not know which request should go to which backend system."

I would like to use Load balancing by WEB Dispatcher between PD2 and PD3 system. What a load balancing i will have if point concrete target for the http requests? What is wrong in my customizing?

"About your test with the ABAP system as the client, please logoff from the ABAP system, stop PD3 (for example), wait until the Web Dispatcher recognizes that PD3 is down, then logon to the ABAP system and perform new tests."

Done but have the same situation. ReLogon to ABAP system after PD3 shutdowned (Disappeared in WEB admin interface) and test ADS again. The same error.

isaias_freitas
Advisor
Advisor
0 Kudos

Hello Vinogradov,

To have the load balance that you want, the parameter "wdisp/system_conflict_resolution = 2" must be kept and you must keep your current wdisp/system_X parameters.

It is not clear why the Web Dispatcher would be sending requests to PD3.

If you can provide a level 2 trace of the Web Dispatcher, capturing the issue, I can analyze the trace to see what I can find.

Regards,

Isaías

0 Kudos

There in attachment new dev_webdisp with trace level 2. This file must be rename to *.rar extention firstly.

dev-webdisprar.txt

Thanks in edvance for yours efforts.

isaias_freitas
Advisor
Advisor
0 Kudos

Hello Vinogradov,

I have analyze the trace file.

The Web Dispatcher detects that PD3 is a possible backend to receive the request, and it decides that it is its turn to receive the request.

Only after that the Web Dispatcher realizes that there is no PD3 instance available, so it returns the error (503 Service Unavailable).

I do not see how we can address this from the Web Dispatcher level, as the Web Dispatcher is operating as expected based on its coding.

And considering that "wdisp/system_conflict_resolution = 2" is deprecated, one suggestion would be to add more instances to PD2, for example, and then to remove PD3 from the Web Dispatcher configuration.

If one of the PD2 instances goes down, the Web Dispatcher can still dispatch the ADS requests to the other PD2 instances that are still available.

Regards,

Isaías

0 Kudos

Hello Isaias,

"And considering that "wdisp/system_conflict_resolution = 2" is deprecated, one suggestion would be to add more instances to PD2, for example, and then to remove PD3 from the Web Dispatcher configuration."

It's means not possible to customize real load balancing in my case for ADS requests between different J2EE instances?

And it possible only for one J2EE instance with several nodes/application servers. I understand correctly?

Regards.

Vitaliy

isaias_freitas
Advisor
Advisor
0 Kudos

Hello Vitaliy,

Your understanding is correct (with a small remark: "not possible to customize real load balancing in my case for ADS requests between different J2EE systems"; "instances" would be used as a synonym for "application servers").

In the end, due to how the Web Dispatcher performs the system selection when "wdisp/system_conflict_resolution = 2", it is not possible to do the load balancing as you wanted.

Regards,

Isaías